使用cmake生成后复制或移动LIB

使用cmake生成后复制或移动LIB,cmake,Cmake,在我的项目中有一个包含第三方库的文件夹(googletest、zlib等等)。我想在构建所有这些库时将这些库放在一个公共文件夹中。我正试着用cmake做这件事,但我遇到了问题。我正在尝试以下代码: add_subdirectory(gtest-1.6.0) add_custom_command( TARGET gtest_main POST_BUILD COMMAND ${CMAKE_COMMAND} -E cop

在我的项目中有一个包含第三方库的文件夹(googletest、zlib等等)。我想在构建所有这些库时将这些库放在一个公共文件夹中。我正试着用cmake做这件事,但我遇到了问题。我正在尝试以下代码:

add_subdirectory(gtest-1.6.0)    
add_custom_command(
            TARGET gtest_main 
            POST_BUILD
            COMMAND ${CMAKE_COMMAND} -E copy ${SRC_LIB_DIR}/*.a ${DST_LIB_DIR})

我认为问题可能在于,在调用
添加子目录
之前,如果在CMakeLists.txt中设置
CMAKE\u LIBRARY\u OUTPUT\u目录
变量,则目标gtest main未在该级别定义,而是在较低级别

,库应该位于正确的位置

此外,与此类似,子项目中的目标保持对输出文件的依赖关系。这对您的副本不起作用-目标将始终过时,因此会重新生成


编辑:我忽略了您的copy命令正在复制.a-files,多亏@Fraser的评论,我还了解到
CMAKE\u ARCHIVE\u OUTPUT\u目录
应该可以做到这一点。

不起作用。生成以下代码:SET(CMAKE_LIBRARY_OUTPUT_目录“${PROJECT_BINARY_DIR}/third_party/lib/release”),然后添加gtest子目录,什么都不做。库总是转到gtest目录根目录。由于gtest默认生成
静态
libs,您需要设置而不是
CMAKE\u LIBRARY\u OUTPUT\u目录,该目录用于
共享
libs。谢谢Fraser和Patrick。CMAKE_归档_输出_目录完成了这一任务。多亏了这两个!!