我如何让Module :: Build编译并链接我的小C程序?

时间:2013-11-21 20:36:05

标签: c perl compilation module-build

我的项目中的src目录中有一个简单的C源文件。我的Build.PL包含以下行:

c_source => ['src'],
extra_compiler_flags => ['-std=c99']

但是,所有这一切都是将其编译到与{C}文件对应的.o目录中的src文件。我真正喜欢的是将它编译和链接以形成可执行文件,然后放入我的bin目录。

Module::Build是否可行且可取?

1 个答案:

答案 0 :(得分:1)

虽然ikegami说这不是正确的做事方式(我同意它可能不是......),但我最终使用了cbuilder对象上的Module::Build 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'
);