我想创建一个项目,我可以使用define flags选择两个不同的目标。
例如,在我的代码中,我有多个部分
#ifdef LINUX
...
#else
...
#
在Jamroot文件中选择两个目标之间的最佳做法是什么?甚至可能吗?我应该在根目录中创建两个不同的Jamroot文件并使用bjam调用它们吗?根据我在手册部分中找到的内容,无法使用特定的Jamroot文件调用 bjam 。
假设我的示例Jammroot文件看起来像这样;
project myproj_linux
:
requirements
<define>LINUX
;
exe myprog_linux:
test/Jamfile
myprog.cpp
;
是否可以在同一个文件中添加额外的项目,例如myproj_ose,或者应该如何完成?或者我可以使用不同的Jamfiles,例如Jamroot根据指定的目标调用的子目录中的Jamfile.linux?
如果我的任何建议都不可能,那么这个问题怎么解决?
答案 0 :(得分:1)
我想你想要这样的东西:
project myproj
: requirements
<target-os>linux:<define>LINUX
<target-os>windows:<define>WINDOWS
;
exe myprog : test/Jamfile myprog.cpp ;
您可以在docs中详细了解条件要求。但这只是用不同的选项构建相同的程序。它也可以改变variations of a target to build。例如:
exe myprog : test/Jamfile myprog_linux.cpp : <target-os>linux ;
exe myprog : test/Jamfile myprog_windows.cpp : <target-os>windows ;