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

时间:2018-06-14 23:43:58

标签: gcc makefile cmake g++ gnu-make

我是CMake的新手。我对CMake文件中的add_definitionsset感到很困惑。

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

第二个问题:D_GLIBCXX_USE_CXX11_ABI这是做什么的?

感谢任何帮助。

非常感谢!

1 个答案:

答案 0 :(得分:1)

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

set(D_GLIBCXX_USE_CXX11_ABI,"0")只需将名为D_GLIBCXX_USE_CXX11_ABI的CMake变量设置为0。您可能看不出任何区别,因为在代码的某处,它被用作add_definitions()的值:

if(D_GLIBCXX_USE_CXX11_ABI)
  add_definitions(-D_GLIBCXX_USE_CXX11_ABI=${D_GLIBCXX_USE_CXX11_ABI})
endif()