@@ -45,90 +45,75 @@ project(
4545####################################################################################################
4646# Build Doxygen documentation
4747####################################################################################################
48-
49- find_package (ddsenabler REQUIRED )
50- get_target_property (ENABLER_INCLUDE_DIR ddsenabler INTERFACE_INCLUDE_DIRECTORIES )
51-
52- find_package (ddsenabler_participants REQUIRED )
53- get_target_property (PARTICIPANTS_INCLUDE_DIR ddsenabler_participants INTERFACE_INCLUDE_DIRECTORIES )
54-
55- message (STATUS "DDS Enabler include directories: ${ENABLER_INCLUDE_DIR} ; ${PARTICIPANTS_INCLUDE_DIR} " )
56- set (SRC_FILE "${PARTICIPANTS_INCLUDE_DIR} /ddsenabler_participants/CBCallbacks.hpp" )
57- set (DST_DIR "${ENABLER_INCLUDE_DIR} /ddsenabler" )
58- file (COPY ${SRC_FILE} DESTINATION ${DST_DIR} )
59- # Collect all public headers
60- file (GLOB_RECURSE HPP_FILES
61- "${ENABLER_INCLUDE_DIR} /ddsenabler/**/*.h*"
62- )
63-
64- find_package (Doxygen REQUIRED )
65- # Create doxygen directories
66- add_custom_target (doc -dirs
67- COMMAND ${CMAKE_COMMAND } -E make_directory ${PROJECT_BINARY_DIR } /doxygen
68- COMMAND ${CMAKE_COMMAND } -E make_directory ${PROJECT_BINARY_DIR } /html
69- COMMAND ${CMAKE_COMMAND } -E make_directory ${PROJECT_BINARY_DIR } /html/doxygen
70- COMMENT "Creating documentation directories" VERBATIM )
71-
72- # Doxygen related variables
73- set (DOXYGEN_INPUT_DIR
74- "${ENABLER_INCLUDE_DIR} /ddsenabler"
75- )
76- # convert CMake list (;) to space-separated for Doxygen
77- string (REPLACE ";" " " DOXYGEN_INPUT_DIR "${DOXYGEN_INPUT_DIR} " )
78-
79- set (DOXYGEN_OUTPUT_DIR "${PROJECT_BINARY_DIR } /doxygen" )
80- set (DOXYGEN_INDEX_FILE "${PROJECT_BINARY_DIR } /doxygen/xml/index.xml" )
81- set (DOXYFILE_IN "${CMAKE_CURRENT_SOURCE_DIR } /code/Doxyfile.in" )
82- set (DOXYFILE_OUT ${PROJECT_BINARY_DIR } /Doxyfile)
83-
84- # Configure doxygen
85- configure_file (${DOXYFILE_IN} ${DOXYFILE_OUT} @ONLY )
86-
87- # Doxygen command
88- add_custom_command (OUTPUT ${DOXYGEN_INDEX_FILE}
89- COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE_OUT}
90- DEPENDS ${HPP_FILES}
91- MAIN_DEPENDENCY ${DOXYFILE_OUT} ${DOXYFILE_IN}
92- COMMENT "Generating doxygen documentation" )
93-
94- # Generate API reference
95- add_custom_target (doxygen ALL
96- DEPENDS ${DOXYGEN_INDEX_FILE}
97- COMMENT "Generated API documentation with doxygen" VERBATIM )
98- add_dependencies (doxygen doc -dirs )
99-
100- # Install doxygen generated XML files
101- install (DIRECTORY ${PROJECT_BINARY_DIR } /doxygen/xml
102- DESTINATION doxygen)
103-
104-
105- ####################################################################################################
106- # Find Sphinx
107- ####################################################################################################
108- set (CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR } /code/cmake" ${CMAKE_MODULE_PATH } )
109- find_package (Sphinx REQUIRED )
110-
111- ####################################################################################################
112- # Compile code used in documentation
113- ####################################################################################################
114- # Option to compile documentation tests
115- option (COMPILE_TESTS "Compile DDS Enabler docs tests" ON )
116- if (COMPILE_TESTS)
117- # CTest needs to be included here, otherwise it is not possible to run the tests from the root
118- # of the build directory
119- enable_testing ()
120- include (CTest )
121- add_subdirectory (code )
122- endif ()
123-
124- ####################################################################################################
125- # Build Sphinx documentation
126- ####################################################################################################
127- # It is possible to build and run tests without generating the documentation output. This saves time
128- # while developing, since generating the documentation from the RSTs takes quite some time.
129- set (SPHINX_SOURCE "${CMAKE_SOURCE_DIR } /docs" )
130- option (BUILD_DOCUMENTATION "Generate documentation" ON )
131- if (BUILD_DOCUMENTATION)
48+ if (BUILD_DOCS)
49+ find_package (ddsenabler REQUIRED )
50+ get_target_property (ENABLER_INCLUDE_DIR ddsenabler INTERFACE_INCLUDE_DIRECTORIES )
51+
52+ find_package (ddsenabler_participants REQUIRED )
53+ get_target_property (PARTICIPANTS_INCLUDE_DIR ddsenabler_participants INTERFACE_INCLUDE_DIRECTORIES )
54+
55+ message (STATUS "DDS Enabler include directories: ${ENABLER_INCLUDE_DIR} ; ${PARTICIPANTS_INCLUDE_DIR} " )
56+ set (SRC_FILE "${PARTICIPANTS_INCLUDE_DIR} /ddsenabler_participants/CBCallbacks.hpp" )
57+ set (DST_DIR "${ENABLER_INCLUDE_DIR} /ddsenabler" )
58+ file (COPY ${SRC_FILE} DESTINATION ${DST_DIR} )
59+ # Collect all public headers
60+ file (GLOB_RECURSE HPP_FILES
61+ "${ENABLER_INCLUDE_DIR} /ddsenabler/**/*.h*"
62+ )
63+
64+ find_package (Doxygen REQUIRED )
65+ # Create doxygen directories
66+ add_custom_target (doc -dirs
67+ COMMAND ${CMAKE_COMMAND } -E make_directory ${PROJECT_BINARY_DIR } /doxygen
68+ COMMAND ${CMAKE_COMMAND } -E make_directory ${PROJECT_BINARY_DIR } /html
69+ COMMAND ${CMAKE_COMMAND } -E make_directory ${PROJECT_BINARY_DIR } /html/doxygen
70+ COMMENT "Creating documentation directories" VERBATIM )
71+
72+ # Doxygen related variables
73+ set (DOXYGEN_INPUT_DIR
74+ "${ENABLER_INCLUDE_DIR} /ddsenabler"
75+ )
76+ # convert CMake list (;) to space-separated for Doxygen
77+ string (REPLACE ";" " " DOXYGEN_INPUT_DIR "${DOXYGEN_INPUT_DIR} " )
78+
79+ set (DOXYGEN_OUTPUT_DIR "${PROJECT_BINARY_DIR } /doxygen" )
80+ set (DOXYGEN_INDEX_FILE "${PROJECT_BINARY_DIR } /doxygen/xml/index.xml" )
81+ set (DOXYFILE_IN "${CMAKE_CURRENT_SOURCE_DIR } /code/Doxyfile.in" )
82+ set (DOXYFILE_OUT ${PROJECT_BINARY_DIR } /Doxyfile)
83+
84+ # Configure doxygen
85+ configure_file (${DOXYFILE_IN} ${DOXYFILE_OUT} @ONLY )
86+
87+ # Doxygen command
88+ add_custom_command (OUTPUT ${DOXYGEN_INDEX_FILE}
89+ COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE_OUT}
90+ DEPENDS ${HPP_FILES}
91+ MAIN_DEPENDENCY ${DOXYFILE_OUT} ${DOXYFILE_IN}
92+ COMMENT "Generating doxygen documentation" )
93+
94+ # Generate API reference
95+ add_custom_target (doxygen ALL
96+ DEPENDS ${DOXYGEN_INDEX_FILE}
97+ COMMENT "Generated API documentation with doxygen" VERBATIM )
98+ add_dependencies (doxygen doc -dirs )
99+
100+ # Install doxygen generated XML files
101+ install (DIRECTORY ${PROJECT_BINARY_DIR } /doxygen/xml
102+ DESTINATION doxygen)
103+
104+
105+ ####################################################################################################
106+ # Find Sphinx
107+ ####################################################################################################
108+ set (CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR } /code/cmake" ${CMAKE_MODULE_PATH } )
109+ find_package (Sphinx REQUIRED )
110+
111+ ####################################################################################################
112+ # Build Sphinx documentation
113+ ####################################################################################################
114+ # It is possible to build and run tests without generating the documentation output. This saves time
115+ # while developing, since generating the documentation from the RSTs takes quite some time.
116+ set (SPHINX_SOURCE "${CMAKE_SOURCE_DIR } /docs" )
132117
133118 # CMake project always build the documentaion using HTML builder. Users can always build with
134119 # other builders using sphinx directly
@@ -159,3 +144,17 @@ if (BUILD_DOCUMENTATION)
159144 "eProsima DDS Enabler documetation in ${DDSENABLER_DOCS_BUILDER} format" )
160145 set (CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} ${DDSENABLER_DOCS_BUILDER} )
161146endif ()
147+
148+ ###############################################################################
149+ # Test
150+ ###############################################################################
151+ # Compile tests if CMake options requires it
152+ compile_test_documentation (
153+ "${PROJECT_SOURCE_DIR } /test" # Test directory
154+ )
155+
156+ ###############################################################################
157+ # Packaging
158+ ###############################################################################
159+ # Install package
160+ eprosima_packaging ()
0 commit comments