使用cmake构建后复制或移动库

时间:2013-03-14 09:35:43

标签: cmake

在我的项目中有一个包含第三方库的文件夹(google test,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})

我认为问题可能是目标gtest主要未在此级别定义但在较低级别

1 个答案:

答案 0 :(得分:8)

如果在调用CMAKE_LIBRARY_OUTPUT_DIRECTORY之前在CMakeLists.txt中设置了add_subdirectory变量(并且子项目没有覆盖它),则库应该落在正确的位置。

此外,子项目中的目标将依赖于输出文件。哪个不适用于您的副本 - 目标将始终过时并因此重建。

编辑:我忽略了你的复制命令正在复制.a文件,感谢@ Fraser的评论,我也了解到CMAKE_ARCHIVE_OUTPUT_DIRECTORY应该这样做。