【问题标题】:What is difference between add_definitions and set in CMake fileadd_definitions 和 CMake 文件中的 set 有什么区别
【发布时间】:2018-11-24 19:32:49
【问题描述】:

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

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

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

感谢任何帮助。

非常感谢!

【问题讨论】:

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


    【解决方案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()
    

    【讨论】:

    • 感谢您的详细解释。我认为这很清楚。那么关于第二部分,你知道 D_GLIBCXX_USE_CXX11_ABI 到底发生了什么变化吗?
    • 我知道这个话题有点老了。然而,上面的标志表明,编译器是否应该启用旧 ABI。详情见这里:gcc.gnu.org/onlinedocs/gcc-5.2.0/libstdc++/manual/manual/…
    猜你喜欢
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 2023-02-14
    • 2011-04-21
    • 1970-01-01
    相关资源
    最近更新 更多