Как я могу иметь Module::Build, скомпилировать и связать мою маленькую C-программу?

У меня есть простой исходный файл C в src каталог в моем проекте. мой Build.PL содержит следующие строки:

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

Тем не менее, все это делает, это скомпилировать его в .o файл в src каталог, соответствующий файлу C. То, что я действительно хотел бы, чтобы это было скомпилировано и связано для формирования исполняемого файла, а затем положить в мой bin каталог.

Это возможно и желательно с Module::Build?

1 ответ

Решение

Хотя Икегами сказал, что это неправильный способ сделать что-то (и я согласен, что, вероятно, нет...), я просто использовал cbuilder добытчик на Module::Build объект для ручной компиляции. Имея только один файл 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'
);
Другие вопросы по тегам