установить (TARGETS ...) и add_subdirectory - PullRequest
21 голосов
/ 23 августа 2010

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

Мой пример использования заключается в том, что я хочу собрать e.gg rpm для gtest.у проекта 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.

IsЕсть ли способ сделать это без исправления gtest-1.5.0?

1 Ответ

8 голосов
/ 23 августа 2010

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

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

...