是否可以将install(TARGETS ...)与在add_subdirectory中添加的目录中定义的目标一起使用?
我的用例是,我想为etest构建e.gg rpm.gtest项目恰好有一个没有任何安装语句的CMakeLists.txt.我想构建包而不将这些语句添加到gtest的CMakeLists.txt.
我有这个结果目录结构:
+ gtest-1.5.0/...
+ CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
现在我想在我的CMakeLists.txt中添加这样的内容:
add_subdirectory(gtest-1.5.0)
install(TARGETS gtest gtest_main ARCHIVE DESTINATION lib)
Run Code Online (Sandbox Code Playgroud)
但是cmake正确地指出:
CMake Error at CMakeLists.txt:10 (install):
install TARGETS given target "gtest" which does not exist in this
directory.
Run Code Online (Sandbox Code Playgroud)
有没有办法在没有修补gtest-1.5.0的情况下做到这一点?
您可以尝试使用文件安装而不是安装目标.缺点是您必须处理共享和静态构建.
install(FILES gtest-1.5.0/gtest_main.so DESTINATION lib)