Как мне добиться следующего в CMake (используя версию 2.8.5)?У меня есть документация, сгенерированная пользовательской целью с именем doc
, вывод которой я хотел бы включить при установке или CPack'ing.
add_custom_target( doc "${DOXYGEN_EXECUTABLE}" Doxyfile )
install( DIRECTORY ${CMAKE_BINARY_DIR}/doc DESTINATION doc )
Doxyfile
говорит Doxygen, что нужно выдать документацию на${CMAKE_BINARY_DIR}/doc
.
Если я делаю это в каталоге сборки:
make doc
cpack
все работает нормально, потому что в первой строке создается каталог, от которого зависит цель install
.
Однако, если у меня свежая сборка (поэтому ${CMAKE_BINARY_DIR}/doc
еще не существует), и я вызываю CPack напрямую:
cpack
, то он жалуется, что не может найти ${CMAKE_BINARY_DIR}/doc
:
CMake Error at <snip>/build/cmake_install.cmake:36 (FILE):
file INSTALL cannot find "<snip>/build/doc".
Я также попробовал следующее:
add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/doc COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile )
install( DIRECTORY ${CMAKE_BINARY_DIR}/doc DESTINATION doc )
, но я все еще получаю ту же ошибку CPack, и выполнение make doc
в каталоге сборки также не работает.
Так что, если я сделаю make doc
вручную до cpack
, он будет работать с конфигурацией в верхней части этого поста, но как я могу сказать cmake / cpack, что директива install
зависит от пользовательской цели doc
, так что сборка документации происходит автоматически, когдаn звонит cpack
или make install
?
Спасибо!