Alien-CSFML
view release on metacpan or search on metacpan
[](https://github.com/sanko/alien-csfml/actions) [](https://...
# NAME
Alien::CSFML - Build and provide access to the official binding of SFML for the
C language
# Description
This distribution builds and installs CSFML; the official binding of SFML for
the C language. Its API is as close as possible to the C++ API (but in C style,
of course), which makes it a perfect tool for building SFML bindings for other
languages that don't directly support C++ libraries.
# Synopsis
use Alien::CSFML;
use ExtUtils::CBuilder;
my $SF = Alien::CSFML->new( 'C++' => 1 );
my $CC = ExtUtils::CBuilder->new( quiet => 0 );
my $SRC = 'hello_world.cxx';
open( my $FH, '>', $SRC ) || die '...';
syswrite( $FH, <<'') || die '...'; close $FH;
#include <SFML/Graphics.hpp>
int main() {
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
sf::CircleShape shape(100.f);
shape.setFillColor(sf::Color::Green);
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(shape);
window.display();
}
return 0;
}
my $OBJ = $CC->compile( 'C++' => 1, source => $SRC, include_dirs => [ $SF->include_dirs ] );
my $EXE = $CC->link_executable(
objects => $OBJ,
extra_linker_flags => ' -lstdc++ ' . $SF->ldflags(qw[graphics system window])
);
print system(
(
$^O eq 'MSWin32' ? '' :
'LD_LIBRARY_PATH=' . join( ':', '.', $SF->library_path(1) ) . ' '
) .
'./' . $EXE
) ? 'Aww...' : 'Yay!';
END { unlink grep defined, $SRC, $OBJ, $EXE; }
# Constructor
my $AS = Alien::CSFML->new( );
Per-object configuration options are set in the constructor and include:
- `C++`
Specifies that the source file is a C++ source file and sets appropriate
compile and linker flags.
# Methods
After creating a new [Alien::CSFML](https://metacpan.org/pod/Alien%3A%3ACSFML) object, use the following
methods to gather information:
( run in 0.382 second using v1.01-cache-2.11-cpan-119454b85a5 )