安装(TARGETS ...)和add_subdirectory

时间:2010-08-23 12:07:46

标签: install cmake

是否可以对使用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,有没有办法做到这一点?

1 个答案:

答案 0 :(得分:8)

您可以尝试使用文件安装而不是安装目标。缺点是您必须处理共享和静态构建。

install(FILES gtest-1.5.0/gtest_main.so DESTINATION lib)

相关问题