You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将现有CMake构建类型的所有参数复制到自定义构建类型?

在CMake 3.8+中复制现有构建类型设置到自定义类型

你可以直接复用现有构建类型(比如Release)的所有编译、链接标志,无需手动逐个复制,具体实现如下:

步骤1:添加自定义构建类型并更新缓存

首先将自定义的Deploy类型加入可用配置列表,并写入CMake缓存(确保VS、Xcode这类多配置生成器能识别):

# 添加Deploy构建类型到配置列表
set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES};Deploy" CACHE STRING "可用构建配置" FORCE)
message("生成的配置类型: ${CMAKE_CONFIGURATION_TYPES}")

步骤2:复制现有构建类型的所有标志

以复制Release类型的设置为例,将对应编译、链接标志变量直接赋值给Deploy的变量:

# 复制Release的C编译标志到Deploy
set(CMAKE_C_FLAGS_DEPLOY "${CMAKE_C_FLAGS_RELEASE}" CACHE STRING "Deploy构建类型的C编译标志" FORCE)
# 复制Release的C++编译标志到Deploy
set(CMAKE_CXX_FLAGS_DEPLOY "${CMAKE_CXX_FLAGS_RELEASE}" CACHE STRING "Deploy构建类型的C++编译标志" FORCE)

# 复制链接器标志(覆盖可执行文件、共享库、静态库、模块等场景)
set(CMAKE_EXE_LINKER_FLAGS_DEPLOY "${CMAKE_EXE_LINKER_FLAGS_RELEASE}" CACHE STRING "Deploy构建类型的可执行文件链接标志" FORCE)
set(CMAKE_SHARED_LINKER_FLAGS_DEPLOY "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}" CACHE STRING "Deploy构建类型的共享库链接标志" FORCE)
set(CMAKE_STATIC_LINKER_FLAGS_DEPLOY "${CMAKE_STATIC_LINKER_FLAGS_RELEASE}" CACHE STRING "Deploy构建类型的静态库链接标志" FORCE)
set(CMAKE_MODULE_LINKER_FLAGS_DEPLOY "${CMAKE_MODULE_LINKER_FLAGS_RELEASE}" CACHE STRING "Deploy构建类型的模块链接标志" FORCE)

说明

  • 使用CACHE ... FORCE是为了确保这些变量被写入CMake缓存,避免后续配置过程中被覆盖
  • 如果你想复制其他构建类型(如Debug)的设置,只需把上述代码中的RELEASE替换为DEBUG即可
  • 这种方式会完整复用目标构建类型的所有标志,不会遗漏任何编译、链接相关配置

内容的提问来源于stack exchange,提问作者AndrewBloom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 10:30:07