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
相关产品推荐
相关产品推荐

