在我的项目中有一个包含第三方库的文件夹(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主要未在此级别定义但在较低级别
答案 0 :(得分:8)
如果在调用CMAKE_LIBRARY_OUTPUT_DIRECTORY
之前在CMakeLists.txt中设置了add_subdirectory
变量(并且子项目没有覆盖它),则库应该落在正确的位置。
此外,子项目中的目标将依赖于输出文件。哪个不适用于您的副本 - 目标将始终过时并因此重建。
编辑:我忽略了你的复制命令正在复制.a文件,感谢@ Fraser的评论,我也了解到CMAKE_ARCHIVE_OUTPUT_DIRECTORY
应该这样做。