Ich fand im Web eine Beispiel-cmake-Datei und legte es in das /doc
Unterverzeichnis meines Projekts, wo sich auch die Datei myproject.doxgen
befindet, die Doxygen-Konfiguration enthält.Build Doxygen von CMake Skript
Ich habe getestet, dass doxygen.exe myproject.doxygen
eine gültige Ausgabe erzeugt. Ich muss das nur in den CMake-Prozess einbauen. So /doc/CMakeLists.txt
ist:
find_package(Doxygen)
option(BUILD_DOCUMENTATION "Create and install the HTML based API
documentation (requires Doxygen)" ${DOXYGEN_FOUND})
if(BUILD_DOCUMENTATION)
if(NOT DOXYGEN_FOUND)
message(FATAL_ERROR "Doxygen is needed to build the documentation.")
endif()
set(doxyfile_in ${CMAKE_CURRENT_SOURCE_DIR}/../doc/myproject.doxygen)
set(doxyfile ${CMAKE_CURRENT_BINARY_DIR}/doxyfile)
configure_file(${doxyfile_in} ${doxyfile} @ONLY)
message("Doxygen build started.")
add_custom_target(doc
COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile_in}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/doc
COMMENT "Generating API documentation with Doxygen"
VERBATIM)
# install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION share/doc)
endif()
Es ist nicht für mich arbeiten, kopieren Sie nur die Original-Konfigurationsdatei in /build/my/project/doc/
und tut nichts mehr.
Was ich möchte, ist die Doxygen-Dokumentation während meiner Builds zu generieren; idealerweise nur beim Erstellen der Release-Konfiguration.
Die CMake Datei, die Sie gezeigt haben erstellt ein Build-Ziel 'doc' die die doxymentation erzeugt -, die zum Beispiel das Laufen bedeutet 'make doc' (oder gleichwertig) wird es erzeugen. Funktioniert das für dich? Oder brauchst du etwas anderes? – Angew
Ich verwende das Projekt in QT Creator. und führt nichts von der Kommandozeile aus. in/build/myproject/es funktioniert ohne zusätzliche Befehle. nur über "build" von IDE – amigo421
Es muss ein "Projekt/Ziel/was auch immer die QtCreator Terminologie ist" namens "doc" sein. Gebäude, das Ihre Dokumentation aufbauen wird. Beachten Sie, dass, da im 'add_custom_target'-Befehl kein 'ALL'-Argument hinter dem' doc' steht, das 'doc'-Ziel * nicht * ein Teil von' make all' (oder gleichwertig) ist. – Angew