Sfoglia il codice sorgente

Merge topic 'doxygen-all'

7b2f440e2b FindDoxygen: Add tests for ALL option
79b29b732c FindDoxygen: add optional ALL argument

Acked-by: Kitware Robot <[email protected]>
Merge-request: !2099
Craig Scott 7 anni fa
parent
commit
4e890800eb

+ 10 - 2
Modules/FindDoxygen.cmake

@@ -69,6 +69,7 @@ Functions
 
     doxygen_add_docs(targetName
         [filesOrDirs...]
+        [ALL]
         [WORKING_DIRECTORY dir]
         [COMMENT comment])
 
@@ -91,6 +92,8 @@ Functions
   the :command:`add_custom_target` command used to create the custom target
   internally.
 
+  If ALL is set, the target will be added to the default build target.
+
   The contents of the generated ``Doxyfile`` can be customized by setting CMake
   variables before calling ``doxygen_add_docs()``. Any variable with a name of
   the form ``DOXYGEN_<tag>`` will have its value substituted for the
@@ -788,7 +791,7 @@ function(doxygen_list_to_quoted_strings LIST_VARIABLE)
 endfunction()
 
 function(doxygen_add_docs targetName)
-    set(_options)
+    set(_options ALL)
     set(_one_value_args WORKING_DIRECTORY COMMENT)
     set(_multi_value_args)
     cmake_parse_arguments(_args
@@ -1089,8 +1092,13 @@ doxygen_add_docs() for target ${targetName}")
     set(_target_doxyfile "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.${targetName}")
     configure_file("${_doxyfile_template}" "${_target_doxyfile}")
 
+    unset(_all)
+    if(${_args_ALL})
+        set(_all ALL)
+    endif()
+
     # Add the target
-    add_custom_target( ${targetName} VERBATIM
+    add_custom_target( ${targetName} ${_all} VERBATIM
         COMMAND ${CMAKE_COMMAND} -E make_directory ${_original_doxygen_output_dir}
         COMMAND "${DOXYGEN_EXECUTABLE}" "${_target_doxyfile}"
         WORKING_DIRECTORY "${_args_WORKING_DIRECTORY}"

+ 42 - 0
Tests/FindDoxygen/AllTarget/CMakeLists.txt

@@ -0,0 +1,42 @@
+cmake_minimum_required(VERSION 3.10)
+project(TestFindDoxygen VERSION 1.0 LANGUAGES NONE)
+enable_testing()
+
+find_package(Doxygen REQUIRED)
+
+file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/main.cpp [[
+/**
+ * \file
+ * \brief One C++ file w/ sample Doxygen comment just to produce any docs...
+ */
+]])
+
+set(DOXYGEN_OUTPUT_DIRECTORY outDirWithout)
+file(REMOVE_RECURSE ${CMAKE_CURRENT_BINARY_DIR}/${DOXYGEN_OUTPUT_DIRECTORY})
+doxygen_add_docs(docsNoAll ${CMAKE_CURRENT_BINARY_DIR}/main.cpp)
+
+set(DOXYGEN_OUTPUT_DIRECTORY outDirWith)
+file(REMOVE_RECURSE ${CMAKE_CURRENT_BINARY_DIR}/${DOXYGEN_OUTPUT_DIRECTORY})
+doxygen_add_docs(docsWithAll ALL ${CMAKE_CURRENT_BINARY_DIR}/main.cpp)
+
+# Define tests cases that check whether targets were built
+file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/dirExists.cmake [[
+cmake_minimum_required(VERSION 3.11)
+if(NOT EXISTS ${dirName})
+    message(FATAL_ERROR "Directory does not exist: ${dirName}")
+endif()
+]])
+
+add_test(NAME checkWith COMMAND
+    ${CMAKE_COMMAND}
+    -D dirName=${CMAKE_CURRENT_BINARY_DIR}/outDirWith
+    -P dirExists.cmake
+)
+add_test(NAME checkWithout COMMAND
+    ${CMAKE_COMMAND}
+    -D dirName=${CMAKE_CURRENT_BINARY_DIR}/outDirWithout
+    -P dirExists.cmake
+)
+set_tests_properties(checkWithout PROPERTIES
+    WILL_FAIL TRUE
+)

+ 10 - 0
Tests/FindDoxygen/CMakeLists.txt

@@ -18,6 +18,16 @@ add_test(NAME FindDoxygen.QuotingTest COMMAND
   --build-options ${build_options}
 )
 
+add_test(NAME FindDoxygen.AllTarget COMMAND
+  ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
+  --build-and-test
+  "${CMake_SOURCE_DIR}/Tests/FindDoxygen/AllTarget"
+  "${CMake_BINARY_DIR}/Tests/FindDoxygen/AllTarget"
+  ${build_generator_args}
+  --build-options ${build_options}
+  --test-command ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
+)
+
 if(CMake_TEST_FindDoxygen_Dot)
   add_test(NAME FindDoxygen.DotComponentTest COMMAND
     ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>