[mlpack-svn] r11856 - in mlpack/trunk: . CMake
fastlab-svn at coffeetalk-1.cc.gatech.edu
fastlab-svn at coffeetalk-1.cc.gatech.edu
Wed Mar 14 13:27:10 EDT 2012
Author: rcurtin
Date: 2012-03-14 13:27:10 -0400 (Wed, 14 Mar 2012)
New Revision: 11856
Added:
mlpack/trunk/CMake/GenerateDoxyfile.cmake
Modified:
mlpack/trunk/CMakeLists.txt
Log:
Generate Doxygen documentation with 'make doc' only in out-of-source build
directory -- don't clutter source directory. (I'm proud of this)
Added: mlpack/trunk/CMake/GenerateDoxyfile.cmake
===================================================================
--- mlpack/trunk/CMake/GenerateDoxyfile.cmake (rev 0)
+++ mlpack/trunk/CMake/GenerateDoxyfile.cmake 2012-03-14 17:27:10 UTC (rev 11856)
@@ -0,0 +1,35 @@
+cmake_minimum_required(VERSION 2.8)
+
+# We need to modify the Doxyfile slightly. We'll copy the Doxyfile into the
+# build directory, update the location of the source, and then run Doxygen and
+# it will generate the documentation into the build directory.
+
+message(STATUS "Hurble ${CMAKE_CURRENT_SOURCE_DIR}")
+
+# First, read the Doxyfile in as a variable.
+file(READ "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile" DOXYFILE_CONTENTS)
+
+# Now, modify all the "INPUT" paths. I've written each of the three out by
+# hand. If more are added, they'll need to be added here too.
+string(REPLACE
+ "./src/mlpack"
+ "${CMAKE_CURRENT_SOURCE_DIR}/src/mlpack"
+ DOXYFILE_AUXVAR "${DOXYFILE_CONTENTS}"
+)
+
+string(REPLACE
+ "./doc/guide"
+ "${CMAKE_CURRENT_SOURCE_DIR}/doc/guide"
+ DOXYFILE_CONTENTS "${DOXYFILE_AUXVAR}"
+)
+
+string(REPLACE
+ "./doc/tutorials"
+ "${CMAKE_CURRENT_SOURCE_DIR}/doc/tutorials"
+ DOXYFILE_AUXVAR "${DOXYFILE_CONTENTS}"
+)
+
+message(STATUS "Ready to go ${DESTDIR}")
+
+# Save the Doxyfile to its new location.
+file(WRITE "${DESTDIR}/Doxyfile" "${DOXYFILE_AUXVAR}")
Modified: mlpack/trunk/CMakeLists.txt
===================================================================
--- mlpack/trunk/CMakeLists.txt 2012-03-14 14:14:39 UTC (rev 11855)
+++ mlpack/trunk/CMakeLists.txt 2012-03-14 17:27:10 UTC (rev 11856)
@@ -143,19 +143,22 @@
# I guess this option will just be unavailable.
find_package(Doxygen)
if (DOXYGEN_FOUND)
- # It may be better if we built the documentation into the build directory, but
- # I'm leaving this for a later day.
+ # Preprocess the Doxyfile. This is done before 'make doc'.
+ add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/Doxyfile
+ PRE_BUILD
+ COMMAND ${CMAKE_COMMAND} -D DESTDIR=${CMAKE_BINARY_DIR} -P
+ ${CMAKE_CURRENT_SOURCE_DIR}/CMake/GenerateDoxyfile.cmake
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMENT "Creating Doxyfile to generate Doxygen documentation"
+ )
+
+ # Generate documentation.
add_custom_target(doc
- ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile
+ DEPENDS ${CMAKE_BINARY_DIR}/Doxyfile
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
COMMENT "Generating API documentation with Doxygen"
)
- add_custom_command(TARGET doc
- POST_BUILD
- COMMAND cmake -E copy_directory
- ${CMAKE_CURRENT_SOURCE_DIR}/doc ${CMAKE_BINARY_DIR}/doc
- COMMENT "Copying API documentation to build directory"
- )
install(DIRECTORY ${CMAKE_BINARY_DIR}/doc/html
DESTINATION share/doc/mlpack
More information about the mlpack-svn
mailing list