如何创建从版本继承的CMAKE配置类型
How to create a CMake configuration type that inherits from Release
此答案描述了如何从头开始创建自定义配置类型。我如何制作仅与一些添加标志的内置Release
完全匹配的配置类型?我现在正在使用:
set(CMAKE_CONFIGURATION_TYPES "Debug;Release;ReleaseWithAssertions" CACHE STRING
"Available build-types: Debug, Release and ReleaseWithAssertions")
set(CMAKE_CXX_FLAGS_RELEASEWITHASSERTIONS "${CMAKE_CXX_FLAGS_RELEASE}
-DENABLE_ASSERTIONS=1")
这似乎可以做我想要的,但是我只是在复制CMAKE_CXX_FLAGS_RELEASE
的值,所以我想知道我是否缺少用户可能期望的任何东西?
no,不尊重添加与内置Release
完全匹配的自定义"配置类型"。这更像是CMAKE的功能请求。
edit :只是看到实际上有一个"为MSVC创建新配置"功能请求,您可以提供支持。
这是一些背景信息,什么可能和无:
-
可能有许多配置特定变量。您可以用脚本复制这些:
get_directory_property(_vars VARIABLES) foreach(_var IN LISTS _vars) if (_var MATCHES "_RELEASE$") string(REPLACE "_RELEASE" "_RELEASEWITHASSERTIONS" _var_new "${_var}") set(${_var_new} "${${_var}}") endif() endforeach()
-
您需要将导入的目标映射到设置
CMAKE_MAP_IMPORTED_CONFIG_<CONFIG>
的新配置:list(APPEND CMAKE_MAP_IMPORTED_CONFIG_RELEASEWITHASSERTIONS "Release" "")
-
您对
$<CONFIG:cfg>
类型生成器表达式检查特定配置名称 -
您必须检查属性中的目录/目标/源文件和配置特定的更改
参考
- CMAKE设置变量递归?
- 要设置和使用变量的CMAKE语法是什么?
如果您要编译任何C
文件,您唯一可能想要的另一个是cmake_c_flags_release。
请参阅Cmake的文档:
None (CMAKE_C_FLAGS or CMAKE_CXX_FLAGS used)
Debug (CMAKE_C_FLAGS_DEBUG or CMAKE_CXX_FLAGS_DEBUG)
Release (CMAKE_C_FLAGS_RELEASE or CMAKE_CXX_FLAGS_RELEASE)
RelWithDebInfo (CMAKE_C_FLAGS_RELWITHDEBINFO or CMAKE_CXX_FLAGS_RELWITHDEBINFO
MinSizeRel (CMAKE_C_FLAGS_MINSIZEREL or CMAKE_CXX_FLAGS_MINSIZEREL)
来自https://gitlab.kitware.com/cmake/community/community/-/wikis/faq#how-can-can-can-i-extend-the-build-modes-with-a--a-----------------------------定制 -
似乎您想为所有这些做同样的事情。
CMAKE_CXX_FLAGS_RELEASEWITHASSERTIONS
CMAKE_C_FLAGS_RELEASEWITHASSERTIONS
CMAKE_EXE_LINKER_FLAGS_RELEASEWITHASSERTIONS
CMAKE_SHARED_LINKER_FLAGS_RELEASEWITHASSERTIONS
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 继承函数的重载解析
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用CMake创建QML插件
- cmake如何在fedora工作站中找到boost静态库包
- 使用CMake检测支持的C++标准
- 继承期间显示未知行为的子类
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 如何使用CMake编译.proto文件来生成.grpcp.pb.cc和.grpc.pb.h文件
- cmake在我的项目中所需的所有静态库都不成功
- 头文件-继承c++
- 为什么在保护模式下继承升级不起作用
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 无法链接 CMake 中的本地库
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 使用具有C++继承的 CMake 时,我应该如何组织我的目录结构?
- 如何创建从版本继承的CMAKE配置类型
- include_directory CMake内部的继承?
- 使用CMake构建Qt项目并从QMainWindow继承会导致未引用的vtable错误