是否可以对使用add_subdirectory添加的目录中定义的目标使用install(TARGETS ...)?
我的用例是,我想为etest构建e.gg rpm。 gtest项目恰好有一个没有任何安装语句的CMakeLists.txt。我想构建包而不将这些语句添加到gtest的CMakeLists.txt。
我有这个结果目录结构:
+ gtest-1.5.0/...
+ CMakeLists.txt
gtest-1.5.0的CMakeLists定义了这样的库:
cxx_static_library(gtest "${cxx_strict}" src/gtest-all.cc)
cxx_static_library(gtest_main "${cxx_strict}" src/gtest_main.cc)
target_link_libraries(gtest_main gtest)
现在我想在我的CMakeLists.txt中添加类似的东西:
add_subdirectory(gtest-1.5.0)
install(TARGETS gtest gtest_main ARCHIVE DESTINATION lib)
但是cmake正确地指出:
CMake Error at CMakeLists.txt:10 (install):
install TARGETS given target "gtest" which does not exist in this
directory.
如果没有修补gtest-1.5.0,有没有办法做到这一点?
答案 0 :(得分:8)
您可以尝试使用文件安装而不是安装目标。缺点是您必须处理共享和静态构建。
install(FILES gtest-1.5.0/gtest_main.so DESTINATION lib)