我在我的C ++应用程序中使用Mongodb客户端和Boost。因为Mongodb客户端仍在使用Boost旧文件系统,而我的C ++应用程序正在使用boost 1.47.0中的文件系统版本3,所以它们会发生冲突。
我找到了解决这个编译问题的方法,即在我的cpp文件中来自Boost的头文件的所有include语句之前添加一个宏定义:
#define BOOST_FILESYSTEM_VERSION 2
但我想知道如何将上面的宏定义放入我的CMake项目文件中。
答案 0 :(得分:48)
查看add_definitions,它会将您的定义添加到编译器命令行,例如使用gcc -D
或使用MSVC /D
。尝试类似:
add_definitions( -DBOOST_FILESYSTEM_VERSION=2 )
在你的情况下,我肯定会使用add_definition
方法,但另一种选择可能会看一下configure_file。然后,您可以创建一个头文件模板,该模板将填充cmake-values并将其包含在源文件中。如果您有许多由CMake确定的可配置参数,这将非常有用。