Подтвердить что ты не робот

Установить (TARGETS...) и add_subdirectory

Можно ли использовать install (TARGETS...) с целями, которые определены в каталогах, добавленных с помощью add_subdirectory?

Мой вариант использования - это то, что я хочу построить, например, rpm для gtest. у самого проекта есть CMakeLists.txt без каких-либо инструкций установки. Я хочу создать пакет без добавления этих операторов в CMakeLists.txt из gtest.

У меня есть эта структура каталогов:

+ gtest-1.5.0/...
+ CMakeLists.txt 

CMakeLists из gtest-1.5.0 определяет библиотеки следующим образом:

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?

4b9b3361

Ответ 1

Вы можете попробовать использовать установку файлов, а не устанавливать цели. Недостатком является то, что вам придется обрабатывать общие и статические сборки.

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