Alien-Xmake
view release on metacpan or search on metacpan
eg/xmake_demo.pl view on Meta::CPAN
use v5.40;
use Alien::Xmake;
use Path::Tiny;
# Setup
my $xmake = Alien::Xmake->new();
my $xmake_bin = $xmake->exe;
my $version = $xmake->config('version');
say "Using xmake $version at $xmake_bin";
# Create a temporary project directory
my $project_dir = Path::Tiny->tempdir( CLEANUP => 1 );
say "Working in: $project_dir";
# Use 'xmake create' to generate a C shared library project
# -P . : Create in current directory
# -l c : Language C
# -t shared : Shared library
chdir $project_dir;
system( $xmake_bin, 'create', '-P', '.', '-l', 'c', '-t', 'shared', 'alien_lib' ) == 0 or die "Failed to create project";
# Build the project
say 'Building project...';
system($xmake_bin) == 0 or die "Build failed";
# Install to a local directory to verify artifacts
my $install_dir = $project_dir->child('dist');
say "Installing to $install_dir...";
system( $xmake_bin, 'install', '-o', $install_dir ) == 0 or die 'Install failed';
# Verify output
my $lib_dir = $install_dir->child('lib');
if ( $lib_dir->exists ) {
$lib_dir->visit(
sub {
my ($path) = @_;
return unless $path->is_file;
say ' - Artifact found: ' . $path->relative($install_dir);
},
{ recurse => 1 }
);
}
else {
warn 'No library directory found.';
}
( run in 0.329 second using v1.01-cache-2.11-cpan-483215c6ad5 )