From 8abe69e41a973ade71f41850ff7b4f3aeac76b45 Mon Sep 17 00:00:00 2001 From: Toki Migimatsu Date: Thu, 18 Jul 2019 23:29:21 -0700 Subject: [PATCH] Add option for building tests and docs --- CMakeLists.txt | 21 +++++++++++----- cmake/doxygen.cmake | 61 +++++++++++++++++++++++++++------------------ doc/Doxyfile.in | 4 +-- 3 files changed, 53 insertions(+), 33 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1abdce6..c05ae67 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,8 @@ project(dbot) # Options # ############################ option(DBOT_BUILD_GPU "Compile CUDA enabled trackers" ON) +option(DBOT_BUILD_TESTS "Compile tests" OFF) +option(DBOT_BUILD_DOCS "Compile docs" OFF) ############################ # Flags # @@ -131,10 +133,8 @@ if(catkin_FOUND) list(APPEND dbot_INCLUDE_DIRS ${catkin_INCLUDE_DIRS}) else(catkin_FOUND) find_package(fl REQUIRED) - find_package(osr REQUIRED) - list(APPEND dbot_INCLUDE_DIRS ${fl_INCLUDE_DIRS}) - list(APPEND dbot_INCLUDE_DIRS ${osr_INCLUDE_DIRS}) + list(APPEND dbot_INCLUDE_DIRS ${fl_INCLUDE_DIRS} source) endif(catkin_FOUND) ############################ @@ -196,6 +196,15 @@ endif(DBOT_BUILD_GPU) ############################ # Tests # ############################ -enable_testing() -include(${CMAKE_MODULE_PATH}/gtest.cmake) -include(utests.cmake) +if(DBOT_BUILD_TESTS) + enable_testing() + include(${CMAKE_MODULE_PATH}/gtest.cmake) + include(utests.cmake) +endif() + +############################ +# Documentation # +############################ +if(DBOT_BUILD_DOCS) + include(cmake/doxygen.cmake) +endif() diff --git a/cmake/doxygen.cmake b/cmake/doxygen.cmake index 805f116..cb52f74 100644 --- a/cmake/doxygen.cmake +++ b/cmake/doxygen.cmake @@ -25,6 +25,9 @@ set(TARGET_FAILED_SCRIPT set(VERSION_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/cmake/version.cmake) +find_package(Doxygen) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile.in ${CMAKE_BINARY_DIR}/Doxyfile) + if(DOXYGEN_FOUND) execute_process(COMMAND "${DOXYGEN_EXECUTABLE}" "--version" OUTPUT_VARIABLE DOXYGEN_VERSION @@ -45,36 +48,44 @@ if(DOXYGEN_FOUND) ${TARGET_FAILED_SCRIPT_TEMPLATE} ${TARGET_FAILED_SCRIPT} @ONLY) - add_custom_target(doc_osr - COMMAND ${CMAKE_COMMAND} -P ${TARGET_FAILED_SCRIPT}) - add_custom_target(doc_osr_and_sync - COMMAND ${CMAKE_COMMAND} -P ${TARGET_FAILED_SCRIPT}) + if(NOT TARGET doc_osr) + add_custom_target(doc_osr + COMMAND ${CMAKE_COMMAND} -P ${TARGET_FAILED_SCRIPT}) + endif() + if(NOT TARGET doc_osr_and_sync) + add_custom_target(doc_osr_and_sync + COMMAND ${CMAKE_COMMAND} -P ${TARGET_FAILED_SCRIPT}) + endif() else(DOXYGEN_VERSION VERSION_LESS MIN_DOXYGEN_VERSION) # doc_osr target - add_custom_target(doc_osr - COMMAND ${CMAKE_COMMAND} - -D PROJECT_SOURCE_DIR:string=${PROJECT_SOURCE_DIR} - -D PROJECT_BINARY_DIR:string=${PROJECT_BINARY_DIR} - -P ${VERSION_SCRIPT} - COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Generating API documentation with Doxygen" VERBATIM) + if(NOT TARGET doc_osr) + add_custom_target(doc_osr + COMMAND ${CMAKE_COMMAND} + -D PROJECT_SOURCE_DIR:string=${PROJECT_SOURCE_DIR} + -D PROJECT_BINARY_DIR:string=${PROJECT_BINARY_DIR} + -P ${VERSION_SCRIPT} + COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating API documentation with Doxygen" VERBATIM) + endif() # doc_osr_and_sync target configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/sync_doc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/cmake/sync_doc.cmake @ONLY) - add_custom_target(doc_osr_and_sync - COMMAND ${CMAKE_COMMAND} - -D PROJECT_SOURCE_DIR:string=${PROJECT_SOURCE_DIR} - -D PROJECT_BINARY_DIR:string=${PROJECT_BINARY_DIR} - -P ${VERSION_SCRIPT} - COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile - COMMAND ${CMAKE_COMMAND} -P - ${CMAKE_CURRENT_BINARY_DIR}/cmake/sync_doc.cmake - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Generating API documentation with Doxygen" VERBATIM) + if(NOT TARGET doc_osr_and_sync) + add_custom_target(doc_osr_and_sync + COMMAND ${CMAKE_COMMAND} + -D PROJECT_SOURCE_DIR:string=${PROJECT_SOURCE_DIR} + -D PROJECT_BINARY_DIR:string=${PROJECT_BINARY_DIR} + -P ${VERSION_SCRIPT} + COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile + COMMAND ${CMAKE_COMMAND} -P + ${CMAKE_CURRENT_BINARY_DIR}/cmake/sync_doc.cmake + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating API documentation with Doxygen" VERBATIM) + endif() endif(DOXYGEN_VERSION VERSION_LESS MIN_DOXYGEN_VERSION) else(DOXYGEN_FOUND) @@ -86,6 +97,8 @@ else(DOXYGEN_FOUND) ${TARGET_FAILED_SCRIPT_TEMPLATE} ${TARGET_FAILED_SCRIPT} @ONLY) - add_custom_target(doc_osr - COMMAND ${CMAKE_COMMAND} -P ${TARGET_FAILED_SCRIPT}) + if(NOT TARGET doc_osr) + add_custom_target(doc_osr + COMMAND ${CMAKE_COMMAND} -P ${TARGET_FAILED_SCRIPT}) + endif() endif(DOXYGEN_FOUND) diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in index 66d7a9b..b00f665 100644 --- a/doc/Doxyfile.in +++ b/doc/Doxyfile.in @@ -753,9 +753,7 @@ WARN_LOGFILE = # spaces. # Note: If this tag is empty the current directory is searched. -INPUT = @PROJECT_SOURCE_DIR@/doc \ - @PROJECT_SOURCE_DIR@/include/fl \ - @PROJECT_SOURCE_DIR@/include/ff +INPUT = @PROJECT_SOURCE_DIR@/source # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses