cmake_minimum_required(VERSION 3.8) project(TestFindDoxygen VERSION 1.0 LANGUAGES NONE) # Testing backward compatible signature find_package(Doxygen REQUIRED) if(TARGET Doxygen::doxygen) # Check backward compatibility if(NOT DOXYGEN_EXECUTABLE) message(FATAL_ERROR "Backward compatibility broken: DOXYGEN_EXECUTABLE not set") endif() if(NOT DOXYGEN) message(FATAL_ERROR "Backward compatibility broken: DOXYGEN not set") endif() # Check presence of expected generated files foreach(file CMakeDoxyfile.in CMakeDoxygenDefaults.cmake) if(NOT EXISTS "${PROJECT_BINARY_DIR}/${file}") message(FATAL_ERROR "Missing generated file: ${file}") endif() endforeach() else() message(FATAL_ERROR "Import target Doxygen::doxygen not defined") endif() doxygen_add_docs(docsNoArgs) if(NOT EXISTS "${PROJECT_BINARY_DIR}/Doxyfile.docsNoArgs") message(FATAL_ERROR "Missing generated file: Doxyfile.docsNoArgs") endif() if(NOT TARGET docsNoArgs) message(FATAL_ERROR "Target docsNoArgs not created") endif() configure_file(spaces_in_name.cpp.in "spaces in name.cpp" COPYONLY) doxygen_add_docs(docsWithArgs "${CMAKE_CURRENT_BINARY_DIR}/spaces in name.cpp" main.cpp ) if(NOT EXISTS "${PROJECT_BINARY_DIR}/Doxyfile.docsWithArgs") message(FATAL_ERROR "Missing generated file: Doxyfile.docsWithArgs") endif() if(NOT TARGET docsWithArgs) message(FATAL_ERROR "Target docsWithArgs not created") endif() # Note that CMake inserts at least one entry into SOURCES when a COMMAND or # DEPENDS option is given to add_custom_target(), so rather than looking for an # exact match, we only verify that the files we expect to be there are present get_target_property(srcList docsWithArgs SOURCES) set(expectedList "${CMAKE_CURRENT_BINARY_DIR}/spaces in name.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp" ) foreach(f IN LISTS expectedList) if(NOT f IN_LIST srcList) message(FATAL_ERROR "SOURCES missing file: ${f}") endif() endforeach() add_custom_target(allDocTargets) add_dependencies(allDocTargets docsNoArgs docsWithArgs)