8

在我的项目中有一个包含第三方库(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 main 未在此级别定义,而是在较低级别

4

1 回答 1

9

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

另外像这样子项目中的目标保持对输出文件的依赖。这不适用于您的副本 - 目标将始终过时并因此重建。

编辑:我忽略了您的复制命令正在复制 .a 文件,并且感谢@Fraser 的评论,我也了解到这CMAKE_ARCHIVE_OUTPUT_DIRECTORY应该可以解决问题。

于 2013-03-14T09:41:47.593 回答