0

我有一个使用 Boost Build 处理的小型 Jamfile,如下所示:

exe add-account    : add-account.cpp    ..//server-lib ../../shared//shared ;
exe add-deck       : add-deck.cpp       ..//server-lib ../../shared//shared ;
exe give-all-cards : give-all-cards.cpp ..//server-lib ../../shared//shared ;
exe give-card      : give-card.cpp      ..//server-lib ../../shared//shared ;

install . :
    add-account
    add-deck
    give-all-cards
    give-card
;

我觉得我应该能够使用某种模板来做到这一点。我一直在Boost Build 用户手册中四处寻找,但没有找到对我有帮助的语言规则。

可能值得一提的是,我知道更多的代码可能不是最好的解决方案,但我仍然对它是否可以完成感兴趣。它至少在我想编译一个充满单个源文件程序的整个目录的情况下很有用。

4

1 回答 1

2

有几种方法可以使这更简洁。仅作说明:

local exe-list = add-account add-deck give-all-cards give-card ;
for exe-file in $(exe-list)
{
    exe $(exe-file) : $(exe-file).cpp ..//server-lib ../../shared//shared ;
}

install . : $(exe-list) ;

您还可以创建辅助规则。

rule simple-exe ( name )
{
    exe $(name) : $(name).cpp ..//server-lib ../../shared//shared ;
}

local exe-list = add-account add-deck give-all-cards give-card ;
for exe-file in $(exe-list)
{
    simple-exe $(exe-file) ;
}

install . : $(exe-list) ;

此外 - 如果经常使用相同的库依赖项,可以将它们放入alias

alias common : ..//server-lib ../../shared//shared ;

exe add-account    : add-account.cpp    common ;
exe add-deck       : add-deck.cpp       common ;
exe give-all-cards : give-all-cards.cpp common ;
exe give-card      : give-card.cpp      common ;

或在project requirements

project my-project : requirements
    <library>..//server-lib
    <library../../shared//shared
;

exe add-account    : add-account.cpp    ;
exe add-deck       : add-deck.cpp       ;
exe give-all-cards : give-all-cards.cpp ;
exe give-card      : give-card.cpp      ;

这些技术的一些组合应该可以解决问题。

于 2014-05-18T15:59:45.937 回答