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