CMake добавить зависимость к цели установки - PullRequest
12 голосов
/ 06 февраля 2012

У меня следующая проблема с использованием cmake. Я использую UseDoxygen из http://tobias.rautenkranz.ch/cmake/doxygen/ для генерации документации для моей библиотеки. Это прекрасно работает, но знаю, я хочу понять следующее: Когда я вызываю «make install», я хочу собрать документацию и установить ее тоже. Поэтому я добавляю

install(DIRECTORY ${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_HTML_DIR} DESTINATION share/doc/mylib/)
add_dependencies(install doc) 

на мой CMakeLists.txt. Это приводит к ошибке:

  CMake Error at CMakeModules/UseDoxygen.cmake:145 (add_dependencies):
  add_dependencies Adding dependency to non-existent target: install
Call Stack (most recent call first):
  CMakeLists.txt:141 (include)

Можно ли обойтись легким обходным путем? Потому что, если цели не подключены, шаг установки ничего не устанавливает, если «make doc» не выполняется вручную перед вызовом «make install».

С уважением Грису

Ответы [ 3 ]

6 голосов
/ 06 февраля 2012

Мы создаем нашу документацию, добавляя ее с помощью add_custom_target с указанным параметром ALL, чтобы она создавалась с целью all.

Затем для установки это просто команда install.Нет необходимости добавлять что-либо к цели install.

Если вы добавите документацию к цели all, то выполнение make install также создаст документацию.

2 голосов
/ 06 февраля 2012

Если вы генерируете документацию по коду, не лучше ли выполнить эту команду после команды сборки?Таким образом, он будет доступен во время установки.

Вы можете добавить пользовательскую команду в POST_BUILD и выполнить там команды doxygen.Подробнее на http://www.cmake.org/cmake/help/cmake-2-8-docs.html#command:add_custom_command

1 голос
/ 24 марта 2014

Построение документации через add_custom_target (ALL ...) не является идеальным решением, так как это означает, что документация создается избыточно для всех конфигураций (Debug, Release, RelWithDebInfo, MinSizeRel).

Мне бы хотелосьчтобы собрать документацию один раз независимо от конфигурации сборки, затем используйте параметр CONFIGURATIONS команды install (), чтобы установить ее только для конфигураций Release и RelWithDebInfo.install () должен зависеть от цели документации, но, как я уже сказал, собирать ее только для одного конфига.Похоже, нет способа добавить зависимость от install () в документацию, которая отвечает этим требованиям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...