You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CMakeLists.txt 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. CMAKE_MINIMUM_REQUIRED(VERSION 3.4)
  2. cmake_policy(SET CMP0026 OLD)
  3. cmake_policy(SET CMP0042 OLD)
  4. cmake_policy(SET CMP0043 OLD)
  5. cmake_policy(SET CMP0045 OLD)
  6. cmake_policy(SET CMP0048 OLD)
  7. PROJECT(OpenVIBE)
  8. SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake-modules")
  9. SET(CMAKE_INSTALL_LIBDIR lib) # Fix for non debian-based distrib, as it seeems to be a common occurence to name this folder lib32/lib64
  10. INCLUDE("Utilities")
  11. INCLUDE("SetProjectVersion")
  12. set_version()
  13. OV_SET_PROJECT_VERSION()
  14. MESSAGE(STATUS "BUILDING VERSION OpenViBE SDK: ${OV_GLOBAL_VERSION_STRING} Branch : ${OV_PROJECT_BRANCH}~${OV_PROJECT_COMMITHASH}")
  15. # Default is to build to dist/. If you wish a custom install, set your own MAKE_INSTALL_PREFIX when you call CMake. Safest to do under a fakeroot.
  16. MESSAGE(STATUS "Appending compilation flags...")
  17. SET(OV_CONFIG_SUBDIR "${PROJECT_NAME}" CACHE STRING "Subdirectory under user directory when configuration and logs will be saved")
  18. IF(NOT DEFINED OV_CUSTOM_DEPENDENCIES_PATH)
  19. IF(WIN32)
  20. IF("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
  21. SET(OV_DEPENDENCIES_PLATFORM_FOLDER_NAME "dependencies_x64")
  22. ELSEIF("${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
  23. SET(OV_DEPENDENCIES_PLATFORM_FOLDER_NAME "dependencies")
  24. ELSE()
  25. SET(OV_DEPENDENCIES_PLATFORM_FOLDER_NAME "dependencies")
  26. ENDIF()
  27. ELSE()
  28. SET(OV_DEPENDENCIES_PLATFORM_FOLDER_NAME "dependencies")
  29. ENDIF()
  30. ENDIF()
  31. SET(OV_CUSTOM_DEPENDENCIES_PATH "${CMAKE_SOURCE_DIR}/${OV_DEPENDENCIES_PLATFORM_FOLDER_NAME}" CACHE STRING "Dependency directory")
  32. SET(OV_SOURCE_DEPENDENCIES_PATH "${CMAKE_SOURCE_DIR}/dependencies-source")
  33. # ----------------------
  34. # Build CMake flags
  35. # ----------------------
  36. SET(BRAND_NAME "OpenViBE" CACHE STRING "Brand with which titles and documentation will be prefixed")
  37. string(TIMESTAMP COPYRIGHT_DATE "2012-%Y")
  38. IF(BRAND_NAME STREQUAL "NeuroRT")
  39. SET(COMPANY_NAME "Mensia Technologies SA")
  40. ELSE()
  41. SET(COMPANY_NAME "Inria")
  42. ENDIF()
  43. OPTION(Flag_VerboseOutput "Verbose CMake output" OFF)
  44. OPTION(OV_DISPLAY_ERROR_LOCATION ON)
  45. OPTION(PUBLISH_DOC_ASSETS "Publish plugin documentation assets" ON)
  46. if(NOT(${Flag_VerboseOutput}))
  47. set(CMAKE_INSTALL_MESSAGE LAZY)
  48. endif()
  49. # If OpenMP is available, using it will allow Eigen to use multiple cores in matrix math.
  50. IF(NOT(APPLE))
  51. INCLUDE("FindOpenMP")
  52. IF(OPENMP_FOUND)
  53. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
  54. ENDIF(OPENMP_FOUND)
  55. ENDIF()
  56. ADD_DEFINITIONS("-DOV_CONFIG_SUBDIR=\"${OV_CONFIG_SUBDIR}\"")
  57. ADD_DEFINITIONS("-DOV_PROJECT_NAME=\"${PROJECT_NAME}\"")
  58. ADD_DEFINITIONS("-DOV_VERSION_MAJOR=\"${OV_GLOBAL_VERSION_MAJOR}\"")
  59. ADD_DEFINITIONS("-DOV_VERSION_MINOR=\"${OV_GLOBAL_VERSION_MINOR}\"")
  60. ADD_DEFINITIONS("-DOV_VERSION_PATCH=\"${OV_GLOBAL_VERSION_PATCH}\"")
  61. IF(NOT DEFINED OV_PACKAGE)
  62. SET(OV_PACKAGE FALSE)
  63. ENDIF(NOT DEFINED OV_PACKAGE)
  64. set(CMAKE_CXX_STANDARD 11)
  65. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  66. IF(WIN32)
  67. ADD_DEFINITIONS("-DNOMINMAX -DBOOST_ALL_NO_LIB")
  68. # The following is needed to keep OpenMP from hogging all the cores. Note that this works only for VS2013+. On VS2010, it may be better to disable OpenMP.
  69. SET(OV_OMP_WAIT_POLICY "PASSIVE")
  70. # Disable /MP if you don't like VS using all the cores for compilation
  71. # Switch /arch:SSE2 enables vectorization. Remove if your CPU/compiler doesn't support it.
  72. # x64 build do not provide SSE2 option because 64bit processors always supports SSE vectorization.
  73. # So the /arch:SSE2 is not recognized for x64 build we have to only activate it for x86.
  74. IF("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
  75. ELSEIF("${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
  76. SET(OV_EIGEN_FLAGS "/arch:SSE2")
  77. ENDIF()
  78. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4355 /MP ${OV_EIGEN_FLAGS}")
  79. SET(OV_WIN32_BOOST_VERSION "1_58")
  80. ELSEIF(APPLE)
  81. SET(OV_EIGEN_FLAGS "-msse2")
  82. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall ${OV_EIGEN_FLAGS}")
  83. ELSEIF(UNIX)
  84. # Switch -msse2 enables vectorization. Remove if your CPU/compiler doesn't support it.
  85. SET(OV_EIGEN_FLAGS "-msse2")
  86. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall ${OV_EIGEN_FLAGS}")
  87. ELSE()
  88. MESSAGE(WARNING "Warning: unknown platform")
  89. ENDIF()
  90. IF(NOT CMAKE_INSTALL_PREFIX)
  91. SET(CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/../openvibe-sdk-build/dist-${CMAKE_BUILD_TYPE}")
  92. ENDIF()
  93. # Setup knowledge of GNU-style install path variables
  94. INCLUDE("GNUInstallDirs")
  95. if(NOT CMAKE_BUILD_TYPE AND CMAKE_GENERATOR MATCHES "Visual Studio*")
  96. set(MULTI_BUILD TRUE)
  97. set( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_INSTALL_PREFIX}/bin" )
  98. set( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_INSTALL_PREFIX}/lib" )
  99. # set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_INSTALL_PREFIX}/archive" )
  100. foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )
  101. string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIGU )
  102. set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIGU} "${CMAKE_INSTALL_PREFIX}/${OUTPUTCONFIG}/bin" )
  103. set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIGU} "${CMAKE_INSTALL_PREFIX}/${OUTPUTCONFIG}/lib" )
  104. # set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} "${CMAKE_INSTALL_PREFIX}/${OUTPUTCONFIG}/archive" )
  105. string(CONCAT DIST_ROOT ${DIST_ROOT} $<$<CONFIG:${OUTPUTCONFIGU}>:${CMAKE_INSTALL_PREFIX}/${OUTPUTCONFIG}>)
  106. endforeach()
  107. set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS "OV_CMAKE_PATH_ROOT=\"${DIST_ROOT}\"")
  108. set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS "OV_CMAKE_PATH_BIN=\"${DIST_ROOT}/bin\"")
  109. set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS "OV_CMAKE_PATH_LIB=\"${DIST_ROOT}/lib\"")
  110. set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS "OV_CMAKE_PATH_DATA=\"${DIST_ROOT}/share/openvibe\"")
  111. set(DIST_BINDIR ${DIST_ROOT}/bin)
  112. set(DIST_LIBDIR ${DIST_ROOT}/lib)
  113. set(DIST_INCLUDEDIR ${DIST_ROOT}/include)
  114. set(DIST_DATADIR ${DIST_ROOT}/share)
  115. set(DIST_DOCDIR ${DIST_ROOT}/doc)
  116. set(DIST_DOCTMP ${DIST_ROOT}/doc-tmp)
  117. set(DIST_BINDIR_ABSOLUTE ${DIST_BINDIR})
  118. # Also install it on the base dir for convenience
  119. install(FILES scripts/AddOpenViBESDKComponents.cmake DESTINATION ${CMAKE_INSTALL_PREFIX}/share)
  120. # Install the .install file inside the dists folders
  121. install(FILES ${CMAKE_BINARY_DIR}/.install DESTINATION ${DIST_ROOT})
  122. elseif(CMAKE_BUILD_TYPE AND OV_PACKAGE)
  123. # Add directories that OpenViBE will use to look for its components runtime, unless overridden by environment variables in the launch scripts.
  124. # These defines should only be used in "openvibe/ov_directories.h".
  125. # We use absolute paths to avoid issue for unit and validation tests
  126. get_filename_component(DIST_ROOT_ABSOLUTE "." REALPATH BASE_DIR "${CMAKE_BINARY_DIR}")
  127. set(DIST_BINDIR_ABSOLUTE ${DIST_ROOT_ABSOLUTE}/bin)
  128. set(CMAKE_INSTALL_PREFIX .)
  129. add_definitions(-DOV_CMAKE_PATH_ROOT="${DIST_ROOT_ABSOLUTE}")
  130. add_definitions(-DOV_CMAKE_PATH_BIN="${DIST_ROOT_ABSOLUTE}/bin")
  131. add_definitions(-DOV_CMAKE_PATH_LIB="${DIST_ROOT_ABSOLUTE}/lib")
  132. add_definitions(-DOV_CMAKE_PATH_DATA="${DIST_ROOT_ABSOLUTE}/share/openvibe")
  133. set(DIST_ROOT ${CMAKE_INSTALL_PREFIX})
  134. set(DIST_BINDIR ${CMAKE_INSTALL_BINDIR})
  135. set(DIST_LIBDIR ${CMAKE_INSTALL_LIBDIR})
  136. set(DIST_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR})
  137. set(DIST_DATADIR ${CMAKE_INSTALL_DATADIR})
  138. set(DIST_DOCDIR doc)
  139. set(DIST_DOCTMP doc-tmp)
  140. set(CPACK_GENERATOR "ZIP")
  141. set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF)
  142. set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${BRAND_NAME})
  143. set(CPACK_PACKAGE_VENDOR "Inria & Mensia Technologies")
  144. set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
  145. set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING.md")
  146. set(CPACK_PACKAGE_VERSION ${OV_GLOBAL_VERSION_MAJOR}.${OV_GLOBAL_VERSION_MINOR}.${OV_GLOBAL_VERSION_PATCH}.${OV_GLOBAL_VERSION_BUILD})
  147. set(CPACK_PACKAGE_VERSION_MAJOR ${OV_GLOBAL_VERSION_MAJOR})
  148. set(CPACK_PACKAGE_VERSION_MINOR ${OV_GLOBAL_VERSION_MINOR})
  149. set(CPACK_PACKAGE_VERSION_PATCH ${OV_GLOBAL_VERSION_PATCH})
  150. if(UNIX)
  151. execute_process(
  152. COMMAND bash -c "echo -n $(lsb_release -i -s)$(lsb_release -r -s)"
  153. OUTPUT_VARIABLE CPACK_SYSTEM_NAME)
  154. endif()
  155. set(CPACK_PACKAGE_NAME "OpenViBE-${CMAKE_BUILD_TYPE}")
  156. include(CPack)
  157. elseif(CMAKE_BUILD_TYPE)
  158. # Add directories that OpenViBE will use to look for its components runtime, unless overridden by environment variables in the launch scripts.
  159. # These defines should only be used in "openvibe/ov_directories.h".
  160. add_definitions(-DOV_CMAKE_PATH_ROOT="${CMAKE_INSTALL_PREFIX}")
  161. add_definitions(-DOV_CMAKE_PATH_BIN="${CMAKE_INSTALL_PREFIX}/bin")
  162. add_definitions(-DOV_CMAKE_PATH_LIB="${CMAKE_INSTALL_PREFIX}/lib")
  163. add_definitions(-DOV_CMAKE_PATH_DATA="${CMAKE_INSTALL_PREFIX}/share/openvibe")
  164. set(DIST_ROOT ${CMAKE_INSTALL_PREFIX})
  165. set(DIST_BINDIR ${CMAKE_INSTALL_FULL_BINDIR})
  166. set(DIST_LIBDIR ${CMAKE_INSTALL_FULL_LIBDIR})
  167. set(DIST_INCLUDEDIR ${CMAKE_INSTALL_FULL_INCLUDEDIR})
  168. set(DIST_DATADIR ${CMAKE_INSTALL_FULL_DATADIR})
  169. set(DIST_DOCDIR ${DIST_ROOT}/doc)
  170. set(DIST_DOCTMP ${DIST_ROOT}/doc-tmp)
  171. set(DIST_BINDIR_ABSOLUTE ${DIST_BINDIR})
  172. else()
  173. message(FATAL_ERROR "Build should specify a type or use a multi-type generator (like Visual Studio)")
  174. endif()
  175. # Print the used compilation parameters (for transparency)
  176. GET_DIRECTORY_PROPERTY(TMP_DEFINITIONS COMPILE_DEFINITIONS)
  177. MESSAGE(STATUS "Compilation flags used at source root: ")
  178. MESSAGE(STATUS " COMPILE_DEFINITIONS = '${TMP_DEFINITIONS}'")
  179. MESSAGE(STATUS " CMAKE_CXX_FLAGS = '${CMAKE_CXX_FLAGS}'")
  180. MESSAGE(STATUS " CMAKE_CXX_FLAGS_RELEASE = '${CMAKE_CXX_FLAGS_RELEASE}'")
  181. MESSAGE(STATUS " CMAKE_CXX_FLAGS_DEBUG = '${CMAKE_CXX_FLAGS_DEBUG}'")
  182. FUNCTION(SET_BUILD_PLATFORM)
  183. IF("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
  184. ADD_DEFINITIONS(-DTARGET_ARCHITECTURE_x64)
  185. ELSEIF("${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
  186. ADD_DEFINITIONS(-DTARGET_ARCHITECTURE_i386)
  187. SET(PLATFORM_TARGET "x86")
  188. ELSE()
  189. ADD_DEFINITIONS(-DTARGET_ARCHITECTURE_Unknown)
  190. ENDIF()
  191. IF(WIN32)
  192. ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE)
  193. ADD_DEFINITIONS(-DTARGET_OS_Windows)
  194. ADD_DEFINITIONS(-DTARGET_COMPILER_VisualStudio)
  195. ELSEIF(APPLE)
  196. ADD_DEFINITIONS(-fnon-call-exceptions)
  197. ADD_DEFINITIONS(-DTARGET_OS_MacOS)
  198. # ADD_DEFINITIONS(-DTARGET_ARCHITECTURE_x64)
  199. ADD_DEFINITIONS(-DTARGET_COMPILER_LLVM)
  200. ELSEIF(UNIX)
  201. # ADD_DEFINITIONS(-fvisibility=hidden) # This flag should be present... man gcc
  202. ADD_DEFINITIONS(-fnon-call-exceptions)
  203. ADD_DEFINITIONS(-DTARGET_OS_Linux)
  204. ADD_DEFINITIONS(-DTARGET_COMPILER_GCC)
  205. ENDIF()
  206. ENDFUNCTION()
  207. # Custom cmakelist can be used to overwrite the default compilation & packaging parameters
  208. # e.g. OEM_DISTRIBUTION
  209. IF(EXISTS "${CMAKE_SOURCE_DIR}/CustomCMakeLists.txt")
  210. MESSAGE(STATUS "Found custom build settings")
  211. INCLUDE("${CMAKE_SOURCE_DIR}/CustomCMakeLists.txt")
  212. ENDIF()
  213. #################################################################
  214. string(TOLOWER ${BRAND_NAME} LOWER_BRAND_NAME)
  215. ADD_DEFINITIONS(-DBRAND_NAME="${BRAND_NAME}")
  216. if(${BRAND_NAME} STREQUAL "NeuroRT")
  217. ADD_DEFINITIONS(-DOV_LOCAL_SYMBOLS)
  218. endif()
  219. IF(OV_DISPLAY_ERROR_LOCATION)
  220. ADD_DEFINITIONS(-DOV_DISPLAY_ERROR_LOCATION)
  221. ENDIF()
  222. #################################################################
  223. SET(OV_LAUNCHER_SOURCE_PATH "${CMAKE_SOURCE_DIR}/cmake-modules/launchers")
  224. # By setting SKIP[_FOLDER]* you can skip a subtree (example: SKIP_A_B_C skips folder a/b/c and all its subfolders if any)
  225. # Skip building documentation
  226. # a list of all project which will be filled by the directory traversal. This is needed to generate the documentation.
  227. SET_PROPERTY(GLOBAL PROPERTY OV_PROP_CURRENT_PROJECTS "")
  228. SET_PROPERTY(GLOBAL PROPERTY OV_PROP_CURRENT_PROJECTS_BUILD_DIR "")
  229. # Used by the various Find* scripts to locate OpenViBE modules
  230. SET(OV_BASE_DIR ${CMAKE_SOURCE_DIR})
  231. SET(OV_BASE_BIN_DIR ${CMAKE_BINARY_DIR})
  232. SET(OV_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib)
  233. # needed for making visual studio projects when this script is called without CMAKE_BUILD_TYPE
  234. SET_PROPERTY(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG "TARGET_BUILDTYPE_Debug")
  235. SET_PROPERTY(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE "TARGET_BUILDTYPE_Release")
  236. SET_PROPERTY(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELWITHDEBINFO "TARGET_BUILDTYPE_Release")
  237. # OpenViBE-specific helper functions that are used by the CMakeLists of the subprojects.
  238. INCLUDE("OvAddProjects")
  239. INCLUDE("OvInstallLaunchScript")
  240. INCLUDE("OvLinkBoostLib")
  241. INCLUDE("OvDelayLoad")
  242. # Sets the PROJECT_VERSION variable to something, depending on overriding OvSetProjectVersion.cmake files
  243. OV_SET_PROJECT_VERSION()
  244. # Sort target into directories for better visualization in IDE
  245. SET_PROPERTY(GLOBAL PROPERTY USE_FOLDERS ON)
  246. SET(APP_FOLDER Applications)
  247. SET(KERNEL_FOLDER Kernel)
  248. SET(MODULES_FOLDER Modules)
  249. SET(PLUGINS_FOLDER Plugins)
  250. SET(TESTS_FOLDER Unit-Tests)
  251. SET(VALIDATION_FOLDER Validation-Tests)
  252. # Traverse these directories and build their components
  253. ADD_SUBDIRECTORY("build-tool/")
  254. ADD_SUBDIRECTORY("documentation/")
  255. ADD_SUBDIRECTORY("common/")
  256. IF(NOT(SKIP_OPENVIBE))
  257. ADD_SUBDIRECTORY("openvibe/")
  258. ENDIF()
  259. IF(NOT(SKIP_KERNEL))
  260. ADD_SUBDIRECTORY("kernel/")
  261. ENDIF()
  262. ADD_SUBDIRECTORY("modules/")
  263. IF(NOT(SKIP_TOOLKIT))
  264. ADD_SUBDIRECTORY("toolkit/")
  265. ENDIF()
  266. IF(NOT(SKIP_PLUGINS))
  267. ADD_SUBDIRECTORY("plugins/")
  268. ENDIF()
  269. IF(NOT(SKIP_APPLICATIONS))
  270. ADD_SUBDIRECTORY("applications/")
  271. ENDIF()
  272. INSTALL(FILES "${CMAKE_BINARY_DIR}/.install" DESTINATION ${CMAKE_INSTALL_PREFIX})
  273. OPTION(BUILD_TESTING "Include and build unit tests" ON)
  274. IF(BUILD_TESTING)
  275. SET(OVT_LOG_DIR "${CMAKE_BINARY_DIR}/test/log" CACHE PATH "Path to directory containing test logs")
  276. SET(OVT_TEST_DATA_DIR "${OV_CUSTOM_DEPENDENCIES_PATH}/test-input" CACHE PATH "Path to test input data files")
  277. ENDIF()
  278. # add the scripts to the project so IDEs using the CMake file are aware of them
  279. FILE(GLOB_RECURSE script_files scripts/*.cmd scripts/*.sh scripts/*.nsi scripts/*.cmake)
  280. INSTALL(FILES scripts/AddOpenViBESDKComponents.cmake DESTINATION ${DIST_DATADIR})
  281. ADD_CUSTOM_TARGET(openvibe-scripts SOURCES ${script_files})
  282. # Enable/Disable unit test
  283. SET(BUILD_UNIT_TEST true CACHE BOOL "Set this flag to true/false to enable/disable unit test building")
  284. SET(BUILD_VALIDATION_TEST true CACHE BOOL "Set this flag to true/false to enable/disable validation test building")
  285. IF(BUILD_UNIT_TEST)
  286. ADD_SUBDIRECTORY("unit-test/")
  287. ENDIF()
  288. IF(BUILD_VALIDATION_TEST)
  289. ADD_SUBDIRECTORY("validation-test/")
  290. ENDIF()