这是我的项目结构:
MainFolder
- Jamroot.jam
- AnotherFolder
- libFolder
- Jamfile.jam
- cpp files
我在一个cpp文件中有一个#ifdef。
例子:
#ifdef SOMEVALUE
Code
#endif
我需要在Jamfile中使用#define编译cpp文件。因为,我有两种类型的可执行文件(一种带有#define,一种没有),我需要在Jamfile本身而不是cpp代码中执行此操作。
我已经尝试了以下方法,但不起作用(无法在#ifdef#endif块中找到定义):
lib libname : [ glob *.cpp ] : <link>static : <define>SOMEVALUE ;
最佳答案
如示例所示,添加预处理器定义将使用“定义”功能。但是需要将该功能指定为目标定义的requirement。 requirements被指定为目标定义的第三个参数,而不是用例中的第四个参数。因此,代替:
lib
libname # main-target-name
: [ glob *.cpp ] # sources
: <link>static # requirements
: <define>SOMEVALUE # default-build
;
您需要将“”从使用要求移动到目标要求:
lib
libname # main-target-name
: [ glob *.cpp ] # sources
: <link>static <define>SOMEVALUE # requirements
: # default-build
: # usage-requirements
;
您可以找到目标定义的所有参数都是here。