gpt4 book ai didi

cmake - 除了编译器标志选择之外,CMAKE_BUILD_TYPE 会影响什么?

转载 作者:行者123 更新时间:2023-12-04 14:25:16 29 4
gpt4 key购买 nike

know如果我们设置 -DCMAKE_BUILD_TYPE=Release(或 Debug 等),则 CMAKE_C_FLAGS_RELEASECMAKE_CXX_FLAGS_RELEASE 将分别附加到 CMAKE_C_FLAGSCMAKE_C_FLAGS

但这就是设置构建类型的唯一效果吗?如果没有,其他影响是什么?

最佳答案

实际上,构建类型会影响很多事情。其中:

  • generator expressions :

    表达式 $<$<CONFIG:DEBUG>:XXX>将扩展为 XXX CMAKE_BUILD_TYPE 设置为 Debug别无他法。

    因为生成器表达式可以在许多命令中使用,所以设置构建类型会影响所有使用依赖于构建类型的表达式的命令。

  • target_link_libraries 添加的库with debug 关键字只在Debug 生效构建类型。

    类似于优化关键字。

    (隐含地,这使用了上述生成器表达式)。

  • IMPORTED 库的一些属性。

    IMPORTED_LOCATION 这样的属性有 config-specific variants ,根据配置类型选择。

    通常 IMPORTED 库是由于 find_package() 而创建的调用,因此您的项目可能以依赖于配置的方式与 3d 方项目链接。

  • CONFIGURATION - install 的特定部分命令。

    只有那些 CONFIGURATION <conf>部分为apply,对应active配置。


多配置 工具不使用 CMAKE_BUILD_TYPE变量,但他们仍然有“构建类型”的概念。当 CMake 解析 CMakeLists.txt 时,该构建类型在 配置 阶段未知。 , 它仅在执行项目的 build 时设置。然而,此构建类型“追溯”影响上述所有属性。

此外,使用多配置构建工具,选择的构建类型附加到输出工件的位置,例如可执行文件和库(参见例如 RUNTIME_OUTPUT_DIRECTORY 目标属性的描述)。

关于cmake - 除了编译器标志选择之外,CMAKE_BUILD_TYPE 会影响什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46819502/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com