You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

CMake实现静态库Debug版本添加'd'后缀的命名配置

解决CMake静态库统一输出目录并添加Debug后缀的方案

嘿,这事儿不难,我给你捋清楚怎么配置CMake就能实现你要的效果:

核心思路

我们需要做两件关键配置:一是给Debug版本的库文件名加上d后缀,二是让所有配置(Debug/Release)的库都输出到统一的/lib目录下。

具体配置步骤

1. 给Debug版本添加后缀

你可以选择全局设置(对所有目标生效)或者只针对当前静态库设置:

  • 全局设置:在add_library之前添加这行,所有Debug版本的目标都会自动加d后缀:
    set(CMAKE_DEBUG_POSTFIX "d")
    
  • 单个目标设置:如果只想让test这个库加后缀,就在add_library之后添加:
    set_target_properties(test PROPERTIES DEBUG_POSTFIX "d")
    
    这种方式更灵活,不会影响其他可能的库目标。

2. 设置统一的输出目录

针对Visual Studio这种多配置生成器,我们需要指定静态库的输出目录,避免默认的x64/Debugx64/Release子目录结构:

# 设置静态库输出到项目二进制目录下的lib文件夹(推荐,不污染源码)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib")

# 如果想输出到源码目录下的lib文件夹,用下面这行:
# set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/lib")

完整的CMakeLists.txt示例

把这些配置整合起来,你的CMakeLists.txt会变成这样:

cmake_minimum_required(VERSION 3.10)
project(MyTestProject)

# 全局设置Debug后缀(可选,也可以用单个目标设置)
set(CMAKE_DEBUG_POSTFIX "d")

# 设置静态库统一输出目录
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib")

# 创建静态库
add_library(test STATIC test.h test.cpp)

# 如果用单个目标设置后缀,就替换上面的全局设置,用这行:
# set_target_properties(test PROPERTIES DEBUG_POSTFIX "d")

效果验证

生成Visual Studio解决方案后,编译Debug版本会在build/lib(如果用二进制目录)下得到testd.lib,编译Release版本会得到test.lib,完全符合你的需求~

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

火山引擎 最新活动