Boost 如何添加宏';cmake中的定义是什么?
我使用MangoDB客户端和Boost在C++应用程序中。因为MunGDB客户端仍使用Boost旧文件系统,而我的C++应用程序使用BooSo1.47.0的文件系统版本3,它们冲突。 我找到了一种解决编译问题的方法,即在我的cpp文件中Boost头文件的所有include语句之前添加宏定义:Boost 如何添加宏';cmake中的定义是什么?,boost,mongodb,cmake,Boost,Mongodb,Cmake,我使用MangoDB客户端和Boost在C++应用程序中。因为MunGDB客户端仍使用Boost旧文件系统,而我的C++应用程序使用BooSo1.47.0的文件系统版本3,它们冲突。 我找到了一种解决编译问题的方法,即在我的cpp文件中Boost头文件的所有include语句之前添加宏定义: #define BOOST_FILESYSTEM_VERSION 2 但是我想知道如何将上述宏的定义放入我的CMake项目文件中。看看,它会将您的定义添加到编译器命令行中,例如使用gcc的-D,或使用MS
#define BOOST_FILESYSTEM_VERSION 2
但是我想知道如何将上述宏的定义放入我的CMake项目文件中。看看,它会将您的定义添加到编译器命令行中,例如使用gcc的-D
,或使用MSVC的/D
。尝试以下方法:
add_definitions( -DBOOST_FILESYSTEM_VERSION=2 )
在您的情况下,我肯定会使用
add_definition
方法,但可能需要另一种方法来查看。然后,您可以创建一个头文件模板,该模板将填充cmake值,并将其包含在源文件中。如果您有许多由CMake确定的可配置参数,这将非常有用。这有助于编译一个C++0x项目,否则它将无法编译。先生,你太棒了d当该值是另一个具有双下划线的宏时,例如\uuuuu函数\uuuuuu
,该过程应该是什么?在ccmake
中是否有任何地方可以指定这些值?看起来此解决方案不可移植。如果我使用tird参与方编译器,它可能无法识别-D
选项。