我的项目中的src
目录中有一个简单的C源文件。我的Build.PL
包含以下行:
c_source => ['src'],
extra_compiler_flags => ['-std=c99']
然而,所做的只是将其编译为src
目录中与C文件相对应的.o
文件。我真正想要的是把它编译并链接成一个可执行文件,然后放在我的bin
目录中。
Module::Build
是否可行且可取?
虽然ikegami说这不是正确的方法(我同意这可能不是…),但我最终还是在Module::Build
对象上使用了cbuilder
getter来手动进行编译。只有一个C文件,我觉得这是一个小小的罪过,这让我继续前进!
my $b = $builder->cbuilder();
my $obj_file = $b->compile(
source => 'src/myfile.c',
extra_compiler_flags => ['-std=c99'],
include_dirs => ['/my/path/zeromq-3.2.4/include']
);
my $lib_file = $b->link_executable(
objects => $obj_file,
extra_linker_flags => [
'-lpthread',
'-L/my/path/sw/zmq/lib/',
'-lzmq'
],
exe_file => 'my_file'
);