que - descargar cmake para linux
Construir doxygen desde el script CMake (1)
La forma en que el archivo CMake que ha mostrado está configurado, crea un objetivo llamado doc
; construir ese objetivo (como ejecutar make doc
) genera la doxicomanía. El objetivo no es parte de make all
(o equivalente); para hacerlo tal, agregue ALL
en la creación personalizada del objetivo:
add_custom_target(
doc ALL
COMMAND #... everything else as before
)
Si desea limitar este objetivo para que solo se cree en una configuración particular (como lo mencionó en los comentarios), puede usar expresiones de generador :
add_custom_target(
doc ALL
COMMAND $<$<CONFIG:Release>:${DOXYGEN_EXECUTABLE} ${doxyfile_in}>
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/doc
COMMENT "Generating API documentation with Doxygen"
VERBATIM
)
Puede suceder que algunos generadores CMake no soporten bien un COMMAND
vacío. Con esto en mente, lo siguiente debe ser a prueba de fallas:
add_custom_target(
doc ALL
COMMAND
$<$<CONFIG:Release>:${DOXYGEN_EXECUTABLE} ${doxyfile_in}>
$<$<NOT:$<CONFIG:Release>>:${CMAKE_COMMAND} -E echo "Only done in Release builds">
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/doc
COMMENT "Generating API documentation with Doxygen"
VERBATIM
)
Encontré en la web un archivo cmake de muestra y lo puse en el subdirectorio /doc
de mi proyecto, donde también se encuentra el archivo myproject.doxgen
, que contiene la configuración de Doxygen.
He probado que ejecutar doxygen.exe myproject.doxygen
produce resultados válidos. Solo necesito incorporar esto en el proceso de CMake. Entonces /doc/CMakeLists.txt
es:
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()
No funciona para mí, solo copia el archivo de configuración original en /build/my/project/doc/
y no hace nada más.
Lo que quiero es generar la documentación doxygen durante mis compilaciones; idealmente, solo cuando se construye la configuración Release.