Я пытаюсь использовать документацию, созданную CMake для Doxygen. Вот как выглядит мой CMakeList.txt:
if (DOXYGEN_FOUND)
# set input and output files
set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/config-file)
set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}doc)
# request to configure the file
configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY)
message("Doxygen build started")
# note the option ALL which allows to build the docs together with the application
add_custom_target( doc_doxygen ALL
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Doxygen"
VERBATIM )
else (DOXYGEN_FOUND)
message("Doxygen need to be installed to generate the doxygen documentation")
endif (DOXYGEN_FOUND)
При запуске make
я получаю следующие ошибки:
Doxygen build started
-- Configuring done
-- Generating done
-- Build files have been written to: /home/newproject/build
[ 5%] Generating API documentation with Doxygen
warning: tag INPUT: input source `doc/mainpage.txt' does not exist
warning: tag INPUT: input source `src/player.cpp' does not exist
warning: tag INPUT: input source `src/player.h' does not exist
warning: tag INPUT: input source `test/tests-mainfunctionality-v2.cpp' does not exist
error: tag OUTPUT_DIRECTORY: Output directory `doc' does not exist and cannot be created
Exiting...
CMakeFiles/doc_doxygen.dir/build.make:57: recipe for target 'CMakeFiles/doc_doxygen' failed
make[2]: *** [CMakeFiles/doc_doxygen] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/doc_doxygen.dir/all' failed
make[1]: *** [CMakeFiles/doc_doxygen.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
хотя эти файлы существуют. Что-то не так с путями, которые я использую?
set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/config-file.doxygen)
, предполагая, что это место, куда будет помещена документация после сборки. Разве это не так? Кроме того, в настоящее время, когда я запускаю make, он работает нормально, но по какой-то причине создается дополнительная папкаbuild...
. Есть идеи, почему? 31.03.2020doxygen
, вам нужно предоставить ему файл конфигурации. Поэтому, когда вы запускаетеCOMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT}
в своей пользовательской цели,${DOXYGEN_OUT}
должен быть файлом конфигурации. Вы указываете где разместить сгенерированную документацию внутри самого файла конфигурации. Найдите переменнуюOUTPUT_DIRECTORY
в конфигурационном файле Doxygen, и вы можете установить для нее значение../doc
илиdoc
в вашем случае. 31.03.2020/config-file
иconfig-file.doxygen
. На данный момент у меня есть только один файл конфигурации в моем корне, который фактически создает документацию. 31.03.2020configure_file()
для копированияconfig-file
из вашего корня в каталог сборки, а аргумент@ONLY
может вносить изменения в этот файл. Поскольку вы копируете файл конфигурации Doxygen в каталог build, кажется, что вы хотите запустить Doxygen из этого каталога. Я просто переименовал скопированный файл вconfig-file.doxygen
, чтобы было более понятно, что это файл конфигурации Doxygen. 31.03.2020