Boost Jamfiles中的#define

Raj*_*123 8 c++ boost bjam

这是我的项目结构:

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)

Gra*_*bot 6

添加预处理器定义使用"定义"功能,如您给出的示例所示.但是需要将该功能指定为目标定义的要求.该要求被指定为目标定义的第三个参数不是第四为您的使用案例.因此,而不是:

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)

您可以在此处找到目标定义的所有参数.