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

CMake设置静态库输出路径后仍输出到lib/debug目录如何解决

原因说明

你当前遇到的路径自动追加debug子目录的问题,是因为使用了多配置生成器(比如Visual Studio、Xcode),这类生成器默认会在通用输出路径后自动拼接对应编译配置(Debug/Release/RelWithDebInfo等)的子目录,你设置的ARCHIVE_OUTPUT_DIRECTORY属于通用配置,会触发这个自动拼接逻辑。

解决方法

直接为静态库目标指定各个编译配置对应的专属输出路径,即可跳过自动追加子目录的逻辑,精确输出到目标路径:

add_library(mylib STATIC  ${SOURCES} ${HEADERS})
set_target_properties(mylib PROPERTIES
        ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/lib
        ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/lib
        ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_CURRENT_SOURCE_DIR}/lib
        ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_CURRENT_SOURCE_DIR}/lib
)

如果需要全局所有静态库都输出到该路径,也可以直接设置全局CMake变量,不需要逐个配置目标:

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_CURRENT_SOURCE_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_CURRENT_SOURCE_DIR}/lib)

调整后无论选择哪种编译配置,生成的mylib.lib都会直接输出到${CMAKE_CURRENT_SOURCE_DIR}/lib目录下。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:39:02