CMake 文件中的 add_definitions 和 set 有什么区别

Wei*_*Wei 4 gcc makefile g++ cmake gnu-make

我是 CMake 的新手。add_definitions我对setCMake 文件感到非常困惑。

例如 add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)set(D_GLIBCXX_USE_CXX11_ABI,"0"),有什么区别吗?我看到了不同的结果,但我无法理解。

第二个问题:D_GLIBCXX_USE_CXX11_ABI这个有什么作用?

任何帮助表示赞赏。

多谢!

arr*_*owd 5

add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)-D_GLIBCXX_USE_CXX11_ABI=0标志附加到项目中的每个编译器调用。

set(D_GLIBCXX_USE_CXX11_ABI,"0")只需将名为 的 CMake 变量设置D_GLIBCXX_USE_CXX11_ABI0. 您可能看不出有什么区别,因为在代码的某个地方它被用作以下值add_definitions()

if(D_GLIBCXX_USE_CXX11_ABI)
  add_definitions(-D_GLIBCXX_USE_CXX11_ABI=${D_GLIBCXX_USE_CXX11_ABI})
endif()
Run Code Online (Sandbox Code Playgroud)