Merged in feature/adding-scripts-simplify (pull request #7)
This makes the following changes: * Does away with convenience libraries (they didn't work and weren't used anyway, and slowed down compile times). * Puts CMakeLists.txt files in tests and examples subdirectories to have more standard CMake structure. * Replaces confusing functions for adding tests/examples with 2 new much clearer functions.release/4.3a0
						commit
						63b42fdaf8
					
				|  | @ -46,9 +46,7 @@ endif() | ||||||
| # Set up options | # Set up options | ||||||
| 
 | 
 | ||||||
| # Configurable Options | # Configurable Options | ||||||
| option(GTSAM_BUILD_TESTS                 "Enable/Disable building of tests"          ON) |  | ||||||
| option(GTSAM_BUILD_TIMING                "Enable/Disable building of timing scripts" OFF) # These do not currently work | option(GTSAM_BUILD_TIMING                "Enable/Disable building of timing scripts" OFF) # These do not currently work | ||||||
| option(GTSAM_BUILD_EXAMPLES              "Enable/Disable building of examples"       ON) |  | ||||||
| if(GTSAM_UNSTABLE_AVAILABLE) | if(GTSAM_UNSTABLE_AVAILABLE) | ||||||
|     option(GTSAM_BUILD_UNSTABLE              "Enable/Disable libgtsam_unstable"          ON) |     option(GTSAM_BUILD_UNSTABLE              "Enable/Disable libgtsam_unstable"          ON) | ||||||
| endif() | endif() | ||||||
|  | @ -83,18 +81,6 @@ endif() | ||||||
| set(CPACK_SOURCE_GENERATOR "TGZ" CACHE STRING "CPack Default Source Generator") | set(CPACK_SOURCE_GENERATOR "TGZ" CACHE STRING "CPack Default Source Generator") | ||||||
| set(CPACK_GENERATOR        "TGZ" CACHE STRING "CPack Default Binary Generator") | set(CPACK_GENERATOR        "TGZ" CACHE STRING "CPack Default Binary Generator") | ||||||
| 
 | 
 | ||||||
| # Flags to determine whether tests and examples are build during 'make install' |  | ||||||
| # Note that these remove the targets from the 'all' |  | ||||||
| option(GTSAM_DISABLE_TESTS_ON_INSTALL "Disables building tests during install" ON) |  | ||||||
| option(GTSAM_DISABLE_EXAMPLES_ON_INSTALL "Disables building examples during install" OFF) |  | ||||||
| 
 |  | ||||||
| # Pull in infrastructure |  | ||||||
| if (GTSAM_BUILD_TESTS) |  | ||||||
|     enable_testing() |  | ||||||
|     include(Dart) |  | ||||||
|     include(CTest) |  | ||||||
| endif() |  | ||||||
| 
 |  | ||||||
| ############################################################################### | ############################################################################### | ||||||
| # Find boost | # Find boost | ||||||
| 
 | 
 | ||||||
|  | @ -365,19 +351,17 @@ set(CPACK_DEBIAN_PACKAGE_DEPENDS "libboost-dev (>= 1.43)") #Example: "libc6 (>= | ||||||
| message(STATUS "===============================================================") | message(STATUS "===============================================================") | ||||||
| message(STATUS "================  Configuration Options  ======================") | message(STATUS "================  Configuration Options  ======================") | ||||||
| message(STATUS "Build flags                                               ") | message(STATUS "Build flags                                               ") | ||||||
| print_config_flag(${GTSAM_BUILD_TIMING}                "Build Timing scripts           ") |  | ||||||
| print_config_flag(${GTSAM_BUILD_EXAMPLES}              "Build Examples                 ") |  | ||||||
| print_config_flag(${GTSAM_BUILD_TESTS}                 "Build Tests                    ") | print_config_flag(${GTSAM_BUILD_TESTS}                 "Build Tests                    ") | ||||||
|  | print_config_flag(${GTSAM_BUILD_EXAMPLES_ALWAYS}       "Build examples with 'make all' ") | ||||||
|  | print_config_flag(${GTSAM_BUILD_TIMING}                "Build Timing scripts           ") | ||||||
| if (DOXYGEN_FOUND) | if (DOXYGEN_FOUND) | ||||||
|     print_config_flag(${GTSAM_BUILD_DOCS}                  "Build Docs                     ") |     print_config_flag(${GTSAM_BUILD_DOCS}              "Build Docs                     ") | ||||||
| endif() | endif() | ||||||
| print_config_flag(${GTSAM_BUILD_STATIC_LIBRARY}        "Build static GTSAM library instead of shared") | print_config_flag(${GTSAM_BUILD_STATIC_LIBRARY}        "Build static GTSAM library instead of shared") | ||||||
| print_config_flag(${GTSAM_BUILD_TYPE_POSTFIXES}        "Put build type in library name ") | print_config_flag(${GTSAM_BUILD_TYPE_POSTFIXES}        "Put build type in library name ") | ||||||
| if(GTSAM_UNSTABLE_AVAILABLE) | if(GTSAM_UNSTABLE_AVAILABLE) | ||||||
|     print_config_flag(${GTSAM_BUILD_UNSTABLE}           "Build libgtsam_unstable        ") |     print_config_flag(${GTSAM_BUILD_UNSTABLE}          "Build libgtsam_unstable        ") | ||||||
| endif() | endif() | ||||||
| print_config_flag(${GTSAM_DISABLE_TESTS_ON_INSTALL}     "No tests in all or install     ") |  | ||||||
| print_config_flag(${GTSAM_DISABLE_EXAMPLES_ON_INSTALL}  "No examples in all or install  ") |  | ||||||
| string(TOUPPER "${CMAKE_BUILD_TYPE}" cmake_build_type_toupper) | string(TOUPPER "${CMAKE_BUILD_TYPE}" cmake_build_type_toupper) | ||||||
| if(NOT MSVC AND NOT XCODE_VERSION) | if(NOT MSVC AND NOT XCODE_VERSION) | ||||||
|     message(STATUS "  Build type                     : ${CMAKE_BUILD_TYPE}") |     message(STATUS "  Build type                     : ${CMAKE_BUILD_TYPE}") | ||||||
|  |  | ||||||
|  | @ -102,7 +102,7 @@ if(    NOT cmake_build_type_tolower STREQUAL "" | ||||||
| endif() | endif() | ||||||
| 
 | 
 | ||||||
| # Mark that first pass is done | # Mark that first pass is done | ||||||
| set(FIRST_PASS_DONE TRUE CACHE BOOL "Internally used to mark whether cmake has been run multiple times" FORCE) | set(FIRST_PASS_DONE TRUE CACHE INTERNAL "Internally used to mark whether cmake has been run multiple times") | ||||||
| mark_as_advanced(FIRST_PASS_DONE)  | mark_as_advanced(FIRST_PASS_DONE)  | ||||||
| 
 | 
 | ||||||
| # Enable Visual Studio solution folders | # Enable Visual Studio solution folders | ||||||
|  |  | ||||||
|  | @ -1,111 +1,204 @@ | ||||||
| # Build macros for using tests | # This file defines the two macros below for easily adding groups of unit tests and scripts, | ||||||
|  | # as well as sets up unit testing and defines several cache options used to control how | ||||||
|  | # tests and scripts are built and run. | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ############################################################################### | ||||||
|  | # Macro: | ||||||
|  | # | ||||||
|  | # gtsamAddTestsGlob(groupName globPatterns excludedFiles linkLibraries) | ||||||
|  | #  | ||||||
|  | # Add a group of unit tests.  A list of unit test .cpp files or glob patterns specifies the | ||||||
|  | # tests to create.  Tests are assigned into a group name so they can easily by run | ||||||
|  | # independently with a make target.  Running 'make check' builds and runs all tests. | ||||||
|  | # | ||||||
|  | # Usage example: | ||||||
|  | #   gtsamAddTestsGlob(basic "test*.cpp" "testBroken.cpp" "gtsam;GeographicLib") | ||||||
|  | # | ||||||
|  | # Arguments: | ||||||
|  | #   groupName:     A name that will allow this group of tests to be run independently, e.g. | ||||||
|  | #                  'basic' causes a 'check.basic' target to be created to run this test | ||||||
|  | #                  group. | ||||||
|  | #   globPatterns:  The list of files or glob patterns from which to create unit tests, with | ||||||
|  | #                  one test created for each cpp file.  e.g. "test*.cpp", or | ||||||
|  | #                  "testA*.cpp;testB*.cpp;testOneThing.cpp". | ||||||
|  | #   excludedFiles: A list of files or globs to exclude, e.g. "testC*.cpp;testBroken.cpp". | ||||||
|  | #                  Pass an empty string "" if nothing needs to be excluded. | ||||||
|  | #   linkLibraries: The list of libraries to link to in addition to CppUnitLite. | ||||||
|  | macro(gtsamAddTestsGlob groupName globPatterns excludedFiles linkLibraries) | ||||||
|  | 	gtsamAddTestsGlob_impl("${groupName}" "${globPatterns}" "${excludedFiles}" "${linkLibraries}") | ||||||
|  | endmacro() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ############################################################################### | ||||||
|  | # Macro: | ||||||
|  | # | ||||||
|  | # gtsamAddExamplesGlob(globPatterns excludedFiles linkLibraries) | ||||||
|  | #  | ||||||
|  | # Add scripts that will serve as examples of how to use the library.  A list of files or | ||||||
|  | # glob patterns is specified, and one executable will be created for each matching .cpp | ||||||
|  | # file.  These executables will not be installed.  They are build with 'make all' if | ||||||
|  | # GTSAM_BUILD_EXAMPLES_ALWAYS is enabled.  They may also be built with 'make examples'. | ||||||
|  | # | ||||||
|  | # Usage example: | ||||||
|  | #   gtsamAddExamplesGlob("*.cpp" "BrokenExample.cpp" "gtsam;GeographicLib") | ||||||
|  | # | ||||||
|  | # Arguments: | ||||||
|  | #   globPatterns:  The list of files or glob patterns from which to create unit tests, with | ||||||
|  | #                  one test created for each cpp file.  e.g. "*.cpp", or | ||||||
|  | #                  "A*.cpp;B*.cpp;MyExample.cpp". | ||||||
|  | #   excludedFiles: A list of files or globs to exclude, e.g. "C*.cpp;BrokenExample.cpp".  Pass | ||||||
|  | #                  an empty string "" if nothing needs to be excluded. | ||||||
|  | #   linkLibraries: The list of libraries to link to. | ||||||
|  | macro(gtsamAddExamplesGlob globPatterns excludedFiles linkLibraries) | ||||||
|  | 	gtsamAddExamplesGlob_impl("${globPatterns}" "${excludedFiles}" "${linkLibraries}") | ||||||
|  | endmacro() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # Implementation follows: | ||||||
|  | 
 | ||||||
|  | # Build macros for using tests | ||||||
| enable_testing() | enable_testing() | ||||||
| 
 | 
 | ||||||
| # Enable make check (http://www.cmake.org/Wiki/CMakeEmulateMakeCheck) | option(GTSAM_BUILD_TESTS                 "Enable/Disable building of tests"          ON) | ||||||
| add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> --output-on-failure) | option(GTSAM_BUILD_EXAMPLES_ALWAYS       "Build examples with 'make all' (build with 'make examples' if not)"       ON) | ||||||
| add_custom_target(timing) |  | ||||||
| 
 | 
 | ||||||
| # Add option for combining unit tests | # Add option for combining unit tests | ||||||
| if(MSVC) | if(MSVC OR XCODE_VERSION) | ||||||
| 	option(GTSAM_SINGLE_TEST_EXE "Combine unit tests into single executable (faster compile)" ON) | 	option(GTSAM_SINGLE_TEST_EXE "Combine unit tests into single executable (faster compile)" ON) | ||||||
| else() | else() | ||||||
| 	option(GTSAM_SINGLE_TEST_EXE "Combine unit tests into single executable (faster compile)" OFF) | 	option(GTSAM_SINGLE_TEST_EXE "Combine unit tests into single executable (faster compile)" OFF) | ||||||
| endif() | endif() | ||||||
|  | mark_as_advanced(GTSAM_SINGLE_TEST_EXE) | ||||||
| 
 | 
 | ||||||
| # Macro for adding categorized tests in a "tests" folder, with  | # Enable make check (http://www.cmake.org/Wiki/CMakeEmulateMakeCheck) | ||||||
| # optional exclusion of tests and convenience library linking options | if(GTSAM_BUILD_TESTS) | ||||||
| #   |     add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> --output-on-failure) | ||||||
| # By default, all tests are linked with CppUnitLite and boost | endif() | ||||||
| # Arguments:  |  | ||||||
| #   - subdir    The name of the category for this test |  | ||||||
| #   - local_libs  A list of convenience libraries to use (if GTSAM_BUILD_CONVENIENCE_LIBRARIES is true) |  | ||||||
| #   - full_libs   The main library to link against if not using convenience libraries |  | ||||||
| #   - excluded_tests  A list of test files that should not be compiled - use for debugging  |  | ||||||
| function(gtsam_add_subdir_tests subdir local_libs full_libs excluded_tests) |  | ||||||
|     # Subdirectory target for tests |  | ||||||
|     add_custom_target(check.${subdir} COMMAND ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> --output-on-failure) |  | ||||||
|     set(is_test TRUE) |  | ||||||
| 
 | 
 | ||||||
| 	# Put check target in Visual Studio solution folder | # Add examples target | ||||||
| 	file(RELATIVE_PATH relative_path "${PROJECT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}") | add_custom_target(examples) | ||||||
| 	set_property(TARGET check.${subdir} PROPERTY FOLDER "${relative_path}") |  | ||||||
| 
 | 
 | ||||||
| 	# Link with CppUnitLite - pulled from gtsam installation | # Include obsolete macros - will be removed in the near future | ||||||
| 	list(APPEND local_libs CppUnitLite) | include(GtsamTestingObsolete) | ||||||
| 	list(APPEND full_libs CppUnitLite) |  | ||||||
| 
 | 
 | ||||||
|     # Build grouped tests |  | ||||||
|     gtsam_add_grouped_scripts("${subdir}"               # Use subdirectory as group label |  | ||||||
|     "tests/test*.cpp" check "Test"                      # Standard for all tests |  | ||||||
|     "${local_libs}" |  | ||||||
|     "${full_libs}" "${excluded_tests}"  # Pass in linking and exclusion lists |  | ||||||
|     ${is_test})                                         # Set all as tests |  | ||||||
| endfunction() |  | ||||||
| 
 | 
 | ||||||
| # Macro for adding categorized timing scripts in a "tests" folder, with  | # Implementations of this file's macros: | ||||||
| # optional exclusion of tests and convenience library linking options |  | ||||||
| #   |  | ||||||
| # By default, all tests are linked with boost |  | ||||||
| # Arguments:  |  | ||||||
| #   - subdir    The name of the category for this timing script |  | ||||||
| #   - local_libs  A list of convenience libraries to use (if GTSAM_BUILD_CONVENIENCE_LIBRARIES is true) |  | ||||||
| #   - full_libs   The main library to link against if not using convenience libraries |  | ||||||
| #   - excluded_srcs  A list of timing files that should not be compiled - use for debugging  |  | ||||||
| macro(gtsam_add_subdir_timing subdir local_libs full_libs excluded_srcs) |  | ||||||
|     # Subdirectory target for timing - does not actually execute the scripts |  | ||||||
|     add_custom_target(timing.${subdir}) |  | ||||||
|     set(is_test FALSE) |  | ||||||
| 
 | 
 | ||||||
|     # Build grouped benchmarks | macro(gtsamAddTestsGlob_impl groupName globPatterns excludedFiles linkLibraries) | ||||||
|     gtsam_add_grouped_scripts("${subdir}"               # Use subdirectory as group label | 	if(GTSAM_BUILD_TESTS) | ||||||
|     "tests/time*.cpp" timing "Timing Benchmark"         # Standard for all timing scripts | 		# Add group target if it doesn't already exist | ||||||
|     "${local_libs}" "${full_libs}" "${excluded_srcs}"   # Pass in linking and exclusion lists | 	    if(NOT TARGET check.${groupName}) | ||||||
|     ${is_test})                                         # Treat as not a test | 			add_custom_target(check.${groupName} COMMAND ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> --output-on-failure) | ||||||
|  | 		endif() | ||||||
|  | 	 | ||||||
|  | 	    # Get all script files | ||||||
|  |         file(GLOB script_files ${globPatterns}) | ||||||
|  | 
 | ||||||
|  | 	    # Remove excluded scripts from the list | ||||||
|  | 	    if(NOT "${excludedFiles}" STREQUAL "") | ||||||
|  | 			file(GLOB excludedFilePaths ${excludedFiles}) | ||||||
|  | 			if("${excludedFilePaths}" STREQUAL "") | ||||||
|  | 				message(WARNING "The pattern '${excludedFiles}' for excluding tests from group ${groupName} did not match any files") | ||||||
|  | 			else() | ||||||
|  | 		    	list(REMOVE_ITEM script_files ${excludedFilePaths}) | ||||||
|  | 			endif() | ||||||
|  | 	    endif() | ||||||
|  | 	 | ||||||
|  | 		# Separate into source files and headers (allows for adding headers to show up in | ||||||
|  | 		# MSVC and Xcode projects). | ||||||
|  | 		set(script_srcs "") | ||||||
|  | 		set(script_headers "") | ||||||
|  | 		foreach(script_file IN ITEMS ${script_files}) | ||||||
|  | 			get_filename_component(script_ext ${script_file} EXT) | ||||||
|  | 			if(script_ext MATCHES "(h|H)") | ||||||
|  | 				list(APPEND script_headers ${script_file}) | ||||||
|  | 			else() | ||||||
|  | 				list(APPEND script_srcs ${script_file}) | ||||||
|  | 			endif() | ||||||
|  | 		endforeach() | ||||||
|  | 	 | ||||||
|  | 		# Don't put test files in folders in MSVC and Xcode because they're already grouped | ||||||
|  | 		source_group("" FILES ${script_srcs} ${script_headers}) | ||||||
|  | 
 | ||||||
|  | 		if(NOT GTSAM_SINGLE_TEST_EXE) | ||||||
|  | 			# Default for Makefiles - each test in its own executable | ||||||
|  | 			foreach(script_src IN ITEMS ${script_srcs}) | ||||||
|  | 				# Get test base name | ||||||
|  | 				get_filename_component(script_name ${script_src} NAME_WE) | ||||||
|  | 			 | ||||||
|  | 				# Add executable | ||||||
|  | 				add_executable(${script_name} ${script_src} ${script_headers}) | ||||||
|  | 				target_link_libraries(${script_name} CppUnitLite ${linkLibraries}) | ||||||
|  | 				 | ||||||
|  | 				# Add target dependencies | ||||||
|  | 				add_test(NAME ${script_name} COMMAND ${script_name}) | ||||||
|  | 				add_dependencies(check.${groupName} ${script_name}) | ||||||
|  | 				add_dependencies(check ${script_name}) | ||||||
|  | 				if(NOT MSVC AND NOT XCODE_VERSION) | ||||||
|  | 				  add_custom_target(${script_name}.run ${EXECUTABLE_OUTPUT_PATH}${script_name}) | ||||||
|  | 				endif() | ||||||
|  | 			 | ||||||
|  | 				# Add TOPSRCDIR | ||||||
|  | 				set_property(SOURCE ${script_src} APPEND PROPERTY COMPILE_DEFINITIONS "TOPSRCDIR=\"${PROJECT_SOURCE_DIR}\"") | ||||||
|  | 			 | ||||||
|  | 				# Exclude from 'make all' and 'make install' | ||||||
|  | 				set_target_properties(${script_name} PROPERTIES EXCLUDE_FROM_ALL ON) | ||||||
|  | 			 | ||||||
|  | 				# Configure target folder (for MSVC and Xcode) | ||||||
|  | 				set_property(TARGET ${script_name} PROPERTY FOLDER "Unit tests/${groupName}") | ||||||
|  | 			endforeach() | ||||||
|  | 		else() | ||||||
|  | 			# Default on MSVC and XCode - combine test group into a single exectuable | ||||||
|  | 			set(target_name check_${groupName}_program) | ||||||
|  | 		 | ||||||
|  | 			# Add executable | ||||||
|  | 			add_executable(${target_name} ${script_srcs} ${script_headers}) | ||||||
|  | 			target_link_libraries(${target_name} CppUnitLite ${linkLibraries}) | ||||||
|  | 		 | ||||||
|  | 			# Only have a main function in one script - use preprocessor | ||||||
|  | 			set(rest_script_srcs ${script_srcs}) | ||||||
|  | 			list(REMOVE_AT rest_script_srcs 0) | ||||||
|  | 			set_property(SOURCE ${rest_script_srcs} APPEND PROPERTY COMPILE_DEFINITIONS "main=static no_main") | ||||||
|  | 		 | ||||||
|  | 			# Add target dependencies | ||||||
|  | 			add_test(NAME ${target_name} COMMAND ${target_name}) | ||||||
|  | 			add_dependencies(check.${groupName} ${target_name}) | ||||||
|  | 			add_dependencies(check ${target_name}) | ||||||
|  | 		 | ||||||
|  | 			# Add TOPSRCDIR | ||||||
|  | 			set_property(SOURCE ${script_srcs} APPEND PROPERTY COMPILE_DEFINITIONS "TOPSRCDIR=\"${PROJECT_SOURCE_DIR}\"") | ||||||
|  | 		 | ||||||
|  | 			# Exclude from 'make all' and 'make install' | ||||||
|  | 			set_target_properties(${target_name} PROPERTIES EXCLUDE_FROM_ALL ON) | ||||||
|  | 
 | ||||||
|  | 			# Configure target folder (for MSVC and Xcode) | ||||||
|  | 			set_property(TARGET ${script_name} PROPERTY FOLDER "Unit tests") | ||||||
|  | 		endif() | ||||||
|  | 	endif() | ||||||
| endmacro() | endmacro() | ||||||
| 
 | 
 | ||||||
| # Macro for adding executables matching a pattern - builds one executable for |  | ||||||
| # each file matching the pattern.  These exectuables are automatically linked |  | ||||||
| # with boost. |  | ||||||
| # Arguments: |  | ||||||
| #   - pattern    The glob pattern to match source files |  | ||||||
| #   - local_libs A list of convenience libraries to use (if GTSAM_BUILD_CONVENIENCE_LIBRARIES is true) |  | ||||||
| #   - full_libs  The main library to link against if not using convenience libraries |  | ||||||
| #   - excluded_srcs  A list of timing files that should not be compiled - use for debugging |  | ||||||
| function(gtsam_add_executables pattern local_libs full_libs excluded_srcs) |  | ||||||
|     set(is_test FALSE) |  | ||||||
| 
 | 
 | ||||||
|     if(NOT excluded_srcs) | macro(gtsamAddExamplesGlob_impl globPatterns excludedFiles linkLibraries) | ||||||
|         set(excluded_srcs "") |  | ||||||
|     endif() |  | ||||||
|      |  | ||||||
|     # Build executables |  | ||||||
|     gtsam_add_grouped_scripts("" "${pattern}" "" "Executable" "${local_libs}" "${full_libs}" "${excluded_srcs}" ${is_test}) |  | ||||||
| endfunction() |  | ||||||
| 
 |  | ||||||
| # General-purpose script for adding tests with categories and linking options |  | ||||||
| macro(gtsam_add_grouped_scripts group pattern target_prefix pretty_prefix_name local_libs full_libs excluded_srcs is_test)  |  | ||||||
|     # Get all script files |     # Get all script files | ||||||
|     set(script_files "") |     file(GLOB script_files ${globPatterns}) | ||||||
|     foreach(one_pattern ${pattern}) |  | ||||||
|         file(GLOB one_script_files "${one_pattern}") |  | ||||||
|         list(APPEND script_files "${one_script_files}") |  | ||||||
|     endforeach() |  | ||||||
| 
 | 
 | ||||||
|     # Remove excluded scripts from the list |     # Remove excluded scripts from the list | ||||||
|     set(exclusions "") # Need to copy out exclusion list for logic to work |     if(NOT "${excludedFiles}" STREQUAL "") | ||||||
|     foreach(one_exclusion ${excluded_srcs}) | 		file(GLOB excludedFilePaths ${excludedFiles}) | ||||||
|         file(GLOB one_exclusion_srcs "${one_exclusion}") | 		if("${excludedFilePaths}" STREQUAL "") | ||||||
|         list(APPEND exclusions "${one_exclusion_srcs}") | 			message(WARNING "The script exclusion pattern '${excludedFiles}' did not match any files") | ||||||
|     endforeach() | 		else() | ||||||
|     if(exclusions) | 	    	list(REMOVE_ITEM script_files ${excludedFilePaths}) | ||||||
|     	list(REMOVE_ITEM script_files ${exclusions}) | 		endif() | ||||||
|     endif(exclusions) |     endif() | ||||||
| 
 | 
 | ||||||
| 	# Separate into source files and headers | 	# Separate into source files and headers (allows for adding headers to show up in | ||||||
|  | 	# MSVC and Xcode projects). | ||||||
| 	set(script_srcs "") | 	set(script_srcs "") | ||||||
| 	set(script_headers "") | 	set(script_headers "") | ||||||
| 	foreach(script_file ${script_files}) | 	foreach(script_file IN ITEMS ${script_files}) | ||||||
| 		get_filename_component(script_ext ${script_file} EXT) | 		get_filename_component(script_ext ${script_file} EXT) | ||||||
| 		if(script_ext MATCHES "(h|H)") | 		if(script_ext MATCHES "(h|H)") | ||||||
| 			list(APPEND script_headers ${script_file}) | 			list(APPEND script_headers ${script_file}) | ||||||
|  | @ -114,93 +207,33 @@ macro(gtsam_add_grouped_scripts group pattern target_prefix pretty_prefix_name l | ||||||
| 		endif() | 		endif() | ||||||
| 	endforeach() | 	endforeach() | ||||||
| 
 | 
 | ||||||
|  | 	# Don't put test files in folders in MSVC and Xcode because they're already grouped | ||||||
|  | 	source_group("" FILES ${script_srcs} ${script_headers}) | ||||||
| 
 | 
 | ||||||
|     # Add targets and dependencies for each script | 	# Create executables | ||||||
|     if(NOT "${group}" STREQUAL "") | 	foreach(script_src IN ITEMS ${script_srcs}) | ||||||
|         message(STATUS "Adding ${pretty_prefix_name}s in ${group}") | 		# Get script base name | ||||||
|     endif() | 		get_filename_component(script_name ${script_src} NAME_WE) | ||||||
| 
 | 
 | ||||||
| 	# Create exe's for each script, unless we're in SINGLE_TEST_EXE mode | 		# Add executable | ||||||
| 	if(NOT is_test OR NOT GTSAM_SINGLE_TEST_EXE) | 		add_executable(${script_name} ${script_src} ${script_headers}) | ||||||
| 		foreach(script_src ${script_srcs}) | 		target_link_libraries(${script_name} ${linkLibraries}) | ||||||
| 			get_filename_component(script_base ${script_src} NAME_WE) |  | ||||||
| 			if (script_base) # Check for null filenames and headers |  | ||||||
| 				set( script_bin ${script_base} ) |  | ||||||
| 				message(STATUS "Adding ${pretty_prefix_name} ${script_bin}")  |  | ||||||
| 				add_executable(${script_bin} ${script_src} ${script_headers}) |  | ||||||
| 				if(NOT "${target_prefix}" STREQUAL "") |  | ||||||
| 					if(NOT "${group}" STREQUAL "") |  | ||||||
| 						add_dependencies(${target_prefix}.${group} ${script_bin}) |  | ||||||
| 					endif() |  | ||||||
| 					add_dependencies(${target_prefix} ${script_bin}) |  | ||||||
| 				endif() |  | ||||||
| 	 | 	 | ||||||
| 				# Add TOPSRCDIR | 		# Add target dependencies | ||||||
| 				set_property(SOURCE ${script_src} APPEND PROPERTY COMPILE_DEFINITIONS "TOPSRCDIR=\"${PROJECT_SOURCE_DIR}\"") | 		add_dependencies(examples ${script_name}) | ||||||
| 
 | 		if(NOT MSVC AND NOT XCODE_VERSION) | ||||||
| 				# Disable building during make all/install | 		  add_custom_target(${script_name}.run ${EXECUTABLE_OUTPUT_PATH}${script_name}) | ||||||
| 				if (GTSAM_DISABLE_TESTS_ON_INSTALL) |  | ||||||
| 					set_target_properties(${script_bin} PROPERTIES EXCLUDE_FROM_ALL ON) |  | ||||||
| 				endif() |  | ||||||
| 				 |  | ||||||
| 				if (is_test) |  | ||||||
| 					add_test(NAME ${script_base} COMMAND ${script_bin}) |  | ||||||
| 				endif() |  | ||||||
| 				 |  | ||||||
| 				# Linking and dependendencies |  | ||||||
| 				if (GTSAM_BUILD_CONVENIENCE_LIBRARIES) |  | ||||||
| 					target_link_libraries(${script_bin} ${local_libs} ${GTSAM_BOOST_LIBRARIES}) |  | ||||||
| 				else() |  | ||||||
| 					target_link_libraries(${script_bin} ${full_libs} ${GTSAM_BOOST_LIBRARIES}) |  | ||||||
| 				endif() |  | ||||||
| 				 |  | ||||||
| 				# Add .run target |  | ||||||
| 				if(NOT MSVC AND NOT XCODE_VERSION) |  | ||||||
| 				  add_custom_target(${script_bin}.run ${EXECUTABLE_OUTPUT_PATH}${script_bin} ${ARGN}) |  | ||||||
| 				endif() |  | ||||||
| 				 |  | ||||||
| 				# Set up Visual Studio folders |  | ||||||
| 				file(RELATIVE_PATH relative_path "${PROJECT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}") |  | ||||||
| 				set_property(TARGET ${script_bin} PROPERTY FOLDER "${relative_path}") |  | ||||||
| 			endif() |  | ||||||
| 		endforeach(script_src) |  | ||||||
| 		 |  | ||||||
| 		if(MSVC) |  | ||||||
| 			source_group("" FILES ${script_srcs} ${script_headers}) |  | ||||||
| 		endif() | 		endif() | ||||||
| 	else() |  | ||||||
| 		# Create single unit test exe from all test scripts |  | ||||||
| 		set(script_bin ${target_prefix}_${group}_prog) |  | ||||||
| 		add_executable(${script_bin} ${script_srcs} ${script_headers}) |  | ||||||
| 		if (GTSAM_BUILD_CONVENIENCE_LIBRARIES) |  | ||||||
| 			target_link_libraries(${script_bin} ${local_libs} ${Boost_LIBRARIES}) |  | ||||||
| 		else() |  | ||||||
| 			target_link_libraries(${script_bin} ${Boost_LIBRARIES} ${full_libs}) |  | ||||||
| 		endif() |  | ||||||
| 		 |  | ||||||
| 		# Only have a main function in one script |  | ||||||
| 		set(rest_script_srcs ${script_srcs}) |  | ||||||
| 		list(REMOVE_AT rest_script_srcs 0) |  | ||||||
| 		set_property(SOURCE ${rest_script_srcs} APPEND PROPERTY COMPILE_DEFINITIONS "main=static no_main") |  | ||||||
| 
 | 
 | ||||||
| 		# Add TOPSRCDIR | 		# Add TOPSRCDIR | ||||||
| 		set_property(SOURCE ${script_srcs} APPEND PROPERTY COMPILE_DEFINITIONS "TOPSRCDIR=\"${PROJECT_SOURCE_DIR}\"") | 		set_property(SOURCE ${script_src} APPEND PROPERTY COMPILE_DEFINITIONS "TOPSRCDIR=\"${PROJECT_SOURCE_DIR}\"") | ||||||
| 	 | 	 | ||||||
| 		# Add test | 		if(NOT GTSAM_BUILD_EXAMPLES_ALWAYS) | ||||||
| 		add_dependencies(${target_prefix}.${group} ${script_bin}) | 			# Exclude from 'make all' and 'make install' | ||||||
| 		add_dependencies(${target_prefix} ${script_bin}) | 			set_target_properties(${target_name} PROPERTIES EXCLUDE_FROM_ALL ON) | ||||||
| 		add_test(NAME ${target_prefix}.${group} COMMAND ${script_bin}) |  | ||||||
| 		 |  | ||||||
| 		# Disable building during make all/install |  | ||||||
| 		if (GTSAM_DISABLE_TESTS_ON_INSTALL) |  | ||||||
| 			set_target_properties(${script_bin} PROPERTIES EXCLUDE_FROM_ALL ON) |  | ||||||
| 		endif() | 		endif() | ||||||
| 
 | 
 | ||||||
| 		# Set up Visual Studio folders | 		# Configure target folder (for MSVC and Xcode) | ||||||
| 		if(MSVC) | 		set_property(TARGET ${script_name} PROPERTY FOLDER "Examples") | ||||||
| 		    file(RELATIVE_PATH relative_path "${PROJECT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}") | 	endforeach() | ||||||
| 			set_property(TARGET ${script_bin} PROPERTY FOLDER "${relative_path}") |  | ||||||
| 			source_group("" FILES ${script_srcs} ${script_headers}) |  | ||||||
| 		endif() |  | ||||||
| 	endif() |  | ||||||
| endmacro() | endmacro() | ||||||
|  |  | ||||||
|  | @ -0,0 +1,195 @@ | ||||||
|  | 
 | ||||||
|  | # Macro for adding categorized tests in a "tests" folder, with  | ||||||
|  | # optional exclusion of tests and convenience library linking options | ||||||
|  | #   | ||||||
|  | # By default, all tests are linked with CppUnitLite and boost | ||||||
|  | # Arguments:  | ||||||
|  | #   - subdir    The name of the category for this test | ||||||
|  | #   - local_libs  A list of convenience libraries to use (if GTSAM_BUILD_CONVENIENCE_LIBRARIES is true) | ||||||
|  | #   - full_libs   The main library to link against if not using convenience libraries | ||||||
|  | #   - excluded_tests  A list of test files that should not be compiled - use for debugging  | ||||||
|  | function(gtsam_add_subdir_tests subdir local_libs full_libs excluded_tests) | ||||||
|  |     # Subdirectory target for tests | ||||||
|  |     add_custom_target(check.${subdir} COMMAND ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> --output-on-failure) | ||||||
|  |     set(is_test TRUE) | ||||||
|  | 
 | ||||||
|  | 	# Put check target in Visual Studio solution folder | ||||||
|  | 	file(RELATIVE_PATH relative_path "${PROJECT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}") | ||||||
|  | 	set_property(TARGET check.${subdir} PROPERTY FOLDER "${relative_path}") | ||||||
|  |      | ||||||
|  | 	# Link with CppUnitLite - pulled from gtsam installation | ||||||
|  | 	list(APPEND local_libs CppUnitLite) | ||||||
|  | 	list(APPEND full_libs CppUnitLite) | ||||||
|  | 
 | ||||||
|  |     # Build grouped tests | ||||||
|  |     gtsam_add_grouped_scripts("${subdir}"               # Use subdirectory as group label | ||||||
|  |     "tests/test*.cpp" check "Test"                      # Standard for all tests | ||||||
|  |     "${local_libs}" | ||||||
|  |     "${full_libs}" "${excluded_tests}"  # Pass in linking and exclusion lists | ||||||
|  |     ${is_test})                                         # Set all as tests | ||||||
|  | endfunction() | ||||||
|  | 
 | ||||||
|  | # Macro for adding categorized timing scripts in a "tests" folder, with  | ||||||
|  | # optional exclusion of tests and convenience library linking options | ||||||
|  | #   | ||||||
|  | # By default, all tests are linked with boost | ||||||
|  | # Arguments:  | ||||||
|  | #   - subdir    The name of the category for this timing script | ||||||
|  | #   - local_libs  A list of convenience libraries to use (if GTSAM_BUILD_CONVENIENCE_LIBRARIES is true) | ||||||
|  | #   - full_libs   The main library to link against if not using convenience libraries | ||||||
|  | #   - excluded_srcs  A list of timing files that should not be compiled - use for debugging  | ||||||
|  | macro(gtsam_add_subdir_timing subdir local_libs full_libs excluded_srcs) | ||||||
|  |     # Subdirectory target for timing - does not actually execute the scripts | ||||||
|  |     add_custom_target(timing.${subdir}) | ||||||
|  |     set(is_test FALSE) | ||||||
|  | 
 | ||||||
|  |     # Build grouped benchmarks | ||||||
|  |     gtsam_add_grouped_scripts("${subdir}"               # Use subdirectory as group label | ||||||
|  |     "tests/time*.cpp" timing "Timing Benchmark"         # Standard for all timing scripts | ||||||
|  |     "${local_libs}" "${full_libs}" "${excluded_srcs}"   # Pass in linking and exclusion lists | ||||||
|  |     ${is_test})                                         # Treat as not a test | ||||||
|  | endmacro() | ||||||
|  | 
 | ||||||
|  | # Macro for adding executables matching a pattern - builds one executable for | ||||||
|  | # each file matching the pattern.  These exectuables are automatically linked | ||||||
|  | # with boost. | ||||||
|  | # Arguments: | ||||||
|  | #   - pattern    The glob pattern to match source files | ||||||
|  | #   - local_libs A list of convenience libraries to use (if GTSAM_BUILD_CONVENIENCE_LIBRARIES is true) | ||||||
|  | #   - full_libs  The main library to link against if not using convenience libraries | ||||||
|  | #   - excluded_srcs  A list of timing files that should not be compiled - use for debugging | ||||||
|  | function(gtsam_add_executables pattern local_libs full_libs excluded_srcs) | ||||||
|  |     set(is_test FALSE) | ||||||
|  |      | ||||||
|  |     if(NOT excluded_srcs) | ||||||
|  |         set(excluded_srcs "") | ||||||
|  |     endif() | ||||||
|  |      | ||||||
|  |     # Build executables | ||||||
|  |     gtsam_add_grouped_scripts("" "${pattern}" "" "Executable" "${local_libs}" "${full_libs}" "${excluded_srcs}" ${is_test}) | ||||||
|  | endfunction() | ||||||
|  | 
 | ||||||
|  | # General-purpose script for adding tests with categories and linking options | ||||||
|  | macro(gtsam_add_grouped_scripts group pattern target_prefix pretty_prefix_name local_libs full_libs excluded_srcs is_test) | ||||||
|  | 	# Print warning about using this obsolete function | ||||||
|  | 	message(AUTHOR_WARNING "Warning:  Please see GtsamTesting.cmake - obsolete cmake cmake macro for creating unit tests, examples, and scripts was called.  This will be removed in the future.  The new macros are much easier anyway!!") | ||||||
|  | 	 | ||||||
|  |     # Get all script files | ||||||
|  |     set(script_files "") | ||||||
|  |     foreach(one_pattern ${pattern}) | ||||||
|  |         file(GLOB one_script_files "${one_pattern}") | ||||||
|  |         list(APPEND script_files "${one_script_files}") | ||||||
|  |     endforeach() | ||||||
|  | 
 | ||||||
|  |     # Remove excluded scripts from the list | ||||||
|  |     set(exclusions "") # Need to copy out exclusion list for logic to work | ||||||
|  |     foreach(one_exclusion ${excluded_srcs}) | ||||||
|  |         file(GLOB one_exclusion_srcs "${one_exclusion}") | ||||||
|  |         list(APPEND exclusions "${one_exclusion_srcs}") | ||||||
|  |     endforeach() | ||||||
|  |     if(exclusions) | ||||||
|  |     	list(REMOVE_ITEM script_files ${exclusions}) | ||||||
|  |     endif(exclusions) | ||||||
|  | 
 | ||||||
|  | 	# Separate into source files and headers | ||||||
|  | 	set(script_srcs "") | ||||||
|  | 	set(script_headers "") | ||||||
|  | 	foreach(script_file ${script_files}) | ||||||
|  | 		get_filename_component(script_ext ${script_file} EXT) | ||||||
|  | 		if(script_ext MATCHES "(h|H)") | ||||||
|  | 			list(APPEND script_headers ${script_file}) | ||||||
|  | 		else() | ||||||
|  | 			list(APPEND script_srcs ${script_file}) | ||||||
|  | 		endif() | ||||||
|  | 	endforeach() | ||||||
|  | 		 | ||||||
|  |      | ||||||
|  |     # Add targets and dependencies for each script | ||||||
|  |     if(NOT "${group}" STREQUAL "") | ||||||
|  |         message(STATUS "Adding ${pretty_prefix_name}s in ${group}") | ||||||
|  |     endif() | ||||||
|  | 	 | ||||||
|  | 	# Create exe's for each script, unless we're in SINGLE_TEST_EXE mode | ||||||
|  | 	if(NOT is_test OR NOT GTSAM_SINGLE_TEST_EXE) | ||||||
|  | 		foreach(script_src ${script_srcs}) | ||||||
|  | 			get_filename_component(script_base ${script_src} NAME_WE) | ||||||
|  | 			if (script_base) # Check for null filenames and headers | ||||||
|  | 				set( script_bin ${script_base} ) | ||||||
|  | 				message(STATUS "Adding ${pretty_prefix_name} ${script_bin}")  | ||||||
|  | 				add_executable(${script_bin} ${script_src} ${script_headers}) | ||||||
|  | 				if(NOT "${target_prefix}" STREQUAL "") | ||||||
|  | 					if(NOT "${group}" STREQUAL "") | ||||||
|  | 						add_dependencies(${target_prefix}.${group} ${script_bin}) | ||||||
|  | 					endif() | ||||||
|  | 					add_dependencies(${target_prefix} ${script_bin}) | ||||||
|  | 				endif() | ||||||
|  | 				 | ||||||
|  | 				# Add TOPSRCDIR | ||||||
|  | 				set_property(SOURCE ${script_src} APPEND PROPERTY COMPILE_DEFINITIONS "TOPSRCDIR=\"${PROJECT_SOURCE_DIR}\"") | ||||||
|  | 
 | ||||||
|  | 				# Disable building during make all/install | ||||||
|  | 				if (GTSAM_DISABLE_TESTS_ON_INSTALL) | ||||||
|  | 					set_target_properties(${script_bin} PROPERTIES EXCLUDE_FROM_ALL ON) | ||||||
|  | 				endif() | ||||||
|  | 				 | ||||||
|  | 				if (is_test) | ||||||
|  | 					add_test(NAME ${script_base} COMMAND ${script_bin}) | ||||||
|  | 				endif() | ||||||
|  | 				 | ||||||
|  | 				# Linking and dependendencies | ||||||
|  | 				if (GTSAM_BUILD_CONVENIENCE_LIBRARIES) | ||||||
|  | 					target_link_libraries(${script_bin} ${local_libs} ${GTSAM_BOOST_LIBRARIES}) | ||||||
|  | 				else() | ||||||
|  | 					target_link_libraries(${script_bin} ${full_libs} ${GTSAM_BOOST_LIBRARIES}) | ||||||
|  | 				endif() | ||||||
|  | 				 | ||||||
|  | 				# Add .run target | ||||||
|  | 				if(NOT MSVC AND NOT XCODE_VERSION) | ||||||
|  | 				  add_custom_target(${script_bin}.run ${EXECUTABLE_OUTPUT_PATH}${script_bin} ${ARGN}) | ||||||
|  | 				endif() | ||||||
|  | 				 | ||||||
|  | 				# Set up Visual Studio folders | ||||||
|  | 				file(RELATIVE_PATH relative_path "${PROJECT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}") | ||||||
|  | 				set_property(TARGET ${script_bin} PROPERTY FOLDER "${relative_path}") | ||||||
|  | 			endif() | ||||||
|  | 		endforeach(script_src) | ||||||
|  | 		 | ||||||
|  | 		if(MSVC) | ||||||
|  | 			source_group("" FILES ${script_srcs} ${script_headers}) | ||||||
|  | 		endif() | ||||||
|  | 	else() | ||||||
|  | 		# Create single unit test exe from all test scripts | ||||||
|  | 		set(script_bin ${target_prefix}_${group}_prog) | ||||||
|  | 		add_executable(${script_bin} ${script_srcs} ${script_headers}) | ||||||
|  | 		if (GTSAM_BUILD_CONVENIENCE_LIBRARIES) | ||||||
|  | 			target_link_libraries(${script_bin} ${local_libs} ${Boost_LIBRARIES}) | ||||||
|  | 		else() | ||||||
|  | 			target_link_libraries(${script_bin} ${Boost_LIBRARIES} ${full_libs}) | ||||||
|  | 		endif() | ||||||
|  | 		 | ||||||
|  | 		# Only have a main function in one script | ||||||
|  | 		set(rest_script_srcs ${script_srcs}) | ||||||
|  | 		list(REMOVE_AT rest_script_srcs 0) | ||||||
|  | 		set_property(SOURCE ${rest_script_srcs} APPEND PROPERTY COMPILE_DEFINITIONS "main=static no_main") | ||||||
|  | 			 | ||||||
|  | 		# Add TOPSRCDIR | ||||||
|  | 		set_property(SOURCE ${script_srcs} APPEND PROPERTY COMPILE_DEFINITIONS "TOPSRCDIR=\"${PROJECT_SOURCE_DIR}\"") | ||||||
|  | 			 | ||||||
|  | 		# Add test | ||||||
|  | 		add_dependencies(${target_prefix}.${group} ${script_bin}) | ||||||
|  | 		add_dependencies(${target_prefix} ${script_bin}) | ||||||
|  | 		add_test(NAME ${target_prefix}.${group} COMMAND ${script_bin}) | ||||||
|  | 		 | ||||||
|  | 		# Disable building during make all/install | ||||||
|  | 		if (GTSAM_DISABLE_TESTS_ON_INSTALL) | ||||||
|  | 			set_target_properties(${script_bin} PROPERTIES EXCLUDE_FROM_ALL ON) | ||||||
|  | 		endif() | ||||||
|  | 		 | ||||||
|  | 		# Set up Visual Studio folders | ||||||
|  | 		if(MSVC) | ||||||
|  | 		    file(RELATIVE_PATH relative_path "${PROJECT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}") | ||||||
|  | 			set_property(TARGET ${script_bin} PROPERTY FOLDER "${relative_path}") | ||||||
|  | 			source_group("" FILES ${script_srcs} ${script_headers}) | ||||||
|  | 		endif() | ||||||
|  | 	endif() | ||||||
|  | endmacro() | ||||||
|  | @ -1,42 +1,8 @@ | ||||||
| if(NOT MSVC) | set (excluded_examples | ||||||
|   add_custom_target(examples) |     DiscreteBayesNet_FG.cpp | ||||||
| endif() |     UGM_chain.cpp | ||||||
| 
 |     UGM_small.cpp | ||||||
| # Build example executables |     elaboratePoint2KalmanFilter.cpp | ||||||
| FILE(GLOB example_srcs "*.cpp") |  | ||||||
| 
 |  | ||||||
| set (excluded_examples #"") |  | ||||||
|     "${CMAKE_CURRENT_SOURCE_DIR}/DiscreteBayesNet_FG.cpp" |  | ||||||
|     "${CMAKE_CURRENT_SOURCE_DIR}/UGM_chain.cpp" |  | ||||||
|     "${CMAKE_CURRENT_SOURCE_DIR}/UGM_small.cpp" |  | ||||||
|     "${CMAKE_CURRENT_SOURCE_DIR}/elaboratePoint2KalmanFilter.cpp" |  | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| list(REMOVE_ITEM example_srcs ${excluded_examples}) | gtsamAddExamplesGlob("*.cpp" "${excluded_examples}" "gtsam;${Boost_PROGRAM_OPTIONS_LIBRARY}") | ||||||
| 
 |  | ||||||
| foreach(example_src ${example_srcs} ) |  | ||||||
|     get_filename_component(example_base ${example_src} NAME_WE) |  | ||||||
|     set( example_bin ${example_base} ) |  | ||||||
|     message(STATUS "Adding Example ${example_bin}") |  | ||||||
| 	if(NOT MSVC) |  | ||||||
|       add_dependencies(examples ${example_bin}) |  | ||||||
| 	endif() |  | ||||||
|     add_executable(${example_bin} ${example_src}) |  | ||||||
|      |  | ||||||
|     # Disable building during make all/install |  | ||||||
|     if (GTSAM_DISABLE_EXAMPLES_ON_INSTALL) |  | ||||||
|         set_target_properties(${example_bin} PROPERTIES EXCLUDE_FROM_ALL ON) |  | ||||||
|     endif() |  | ||||||
|      |  | ||||||
|     target_link_libraries(${example_bin} gtsam ${Boost_PROGRAM_OPTIONS_LIBRARY}) |  | ||||||
| 	if(NOT MSVC AND NOT XCODE_VERSION) |  | ||||||
|       add_custom_target(${example_bin}.run ${EXECUTABLE_OUTPUT_PATH}${example_bin} ${ARGN}) |  | ||||||
| 	endif() |  | ||||||
| 	 |  | ||||||
| 	# Set up Visual Studio folder |  | ||||||
| 	if(MSVC) |  | ||||||
| 	  set_property(TARGET ${example_bin} PROPERTY FOLDER "Examples") |  | ||||||
| 	endif() |  | ||||||
| 
 |  | ||||||
| endforeach(example_src) |  | ||||||
| 
 |  | ||||||
|  |  | ||||||
|  | @ -5,16 +5,8 @@ install(FILES ${base_headers} DESTINATION include/gtsam/base) | ||||||
| file(GLOB base_headers_tree "treeTraversal/*.h") | file(GLOB base_headers_tree "treeTraversal/*.h") | ||||||
| install(FILES ${base_headers_tree} DESTINATION include/gtsam/base/treeTraversal) | install(FILES ${base_headers_tree} DESTINATION include/gtsam/base/treeTraversal) | ||||||
| 
 | 
 | ||||||
| # Files to exclude from compilation of tests and timing scripts |  | ||||||
| set(base_excluded_files |  | ||||||
| # "${CMAKE_CURRENT_SOURCE_DIR}/tests/testTypedDiscreteFactor.cpp" # Example of excluding a test |  | ||||||
| #    ""  # Add to this list, with full path, to exclude |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| # Build tests | # Build tests | ||||||
| if (GTSAM_BUILD_TESTS) | add_subdirectory(tests) | ||||||
|     gtsam_add_subdir_tests(base "gtsam" "gtsam" "${base_excluded_files}")  |  | ||||||
| endif(GTSAM_BUILD_TESTS) |  | ||||||
| 
 | 
 | ||||||
| # Build timing scripts | # Build timing scripts | ||||||
| if (GTSAM_BUILD_TIMING) | if (GTSAM_BUILD_TIMING) | ||||||
|  |  | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | gtsamAddTestsGlob(base "test*.cpp" "" "gtsam") | ||||||
|  | @ -4,13 +4,8 @@ file(GLOB discrete_headers "*.h") | ||||||
| # FIXME: exclude headers | # FIXME: exclude headers | ||||||
| install(FILES ${discrete_headers} DESTINATION include/gtsam/discrete) | install(FILES ${discrete_headers} DESTINATION include/gtsam/discrete) | ||||||
| 
 | 
 | ||||||
| # Exclude tests that don't work |  | ||||||
| set (discrete_excluded_tests "") |  | ||||||
| 
 |  | ||||||
| # Add all tests | # Add all tests | ||||||
| if (GTSAM_BUILD_TESTS) | add_subdirectory(tests) | ||||||
|     gtsam_add_subdir_tests(discrete "gtsam" "gtsam" "${discrete_excluded_tests}") |  | ||||||
| endif() |  | ||||||
| 
 | 
 | ||||||
| # Build timing scripts | # Build timing scripts | ||||||
| #if (GTSAM_BUILD_TIMING) | #if (GTSAM_BUILD_TIMING) | ||||||
|  |  | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | gtsamAddTestsGlob(discrete "test*.cpp" "" "gtsam") | ||||||
|  | @ -2,16 +2,8 @@ | ||||||
| file(GLOB geometry_headers "*.h") | file(GLOB geometry_headers "*.h") | ||||||
| install(FILES ${geometry_headers} DESTINATION include/gtsam/geometry) | install(FILES ${geometry_headers} DESTINATION include/gtsam/geometry) | ||||||
| 
 | 
 | ||||||
| # Files to exclude from compilation of tests and timing scripts |  | ||||||
| set(geometry_excluded_files |  | ||||||
| # "${CMAKE_CURRENT_SOURCE_DIR}/tests/testTypedDiscreteFactor.cpp" # Example of excluding a test      |  | ||||||
|     ""  # Add to this list, with full path, to exclude |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| # Build tests | # Build tests | ||||||
| if (GTSAM_BUILD_TESTS) | add_subdirectory(tests) | ||||||
|     gtsam_add_subdir_tests(geometry "gtsam" "gtsam" "${geometry_excluded_files}")  |  | ||||||
| endif(GTSAM_BUILD_TESTS) |  | ||||||
| 
 | 
 | ||||||
| # Build timing scripts | # Build timing scripts | ||||||
| if (GTSAM_BUILD_TIMING) | if (GTSAM_BUILD_TIMING) | ||||||
|  |  | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | gtsamAddTestsGlob(geometry "test*.cpp" "" "gtsam") | ||||||
|  | @ -2,16 +2,8 @@ | ||||||
| file(GLOB inference_headers "*.h") | file(GLOB inference_headers "*.h") | ||||||
| install(FILES ${inference_headers} DESTINATION include/gtsam/inference) | install(FILES ${inference_headers} DESTINATION include/gtsam/inference) | ||||||
| 
 | 
 | ||||||
| # Files to exclude from compilation of tests and timing scripts |  | ||||||
| set(inference_excluded_files |  | ||||||
| # "${CMAKE_CURRENT_SOURCE_DIR}/tests/testTypedDiscreteFactor.cpp" # Example of excluding a test      |  | ||||||
|     ""  # Add to this list, with full path, to exclude |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| # Build tests | # Build tests | ||||||
| if (GTSAM_BUILD_TESTS) | add_subdirectory(tests) | ||||||
|     gtsam_add_subdir_tests(inference "gtsam" "gtsam" "${inference_excluded_files}")  |  | ||||||
| endif(GTSAM_BUILD_TESTS) |  | ||||||
| 
 | 
 | ||||||
| # Build timing scripts | # Build timing scripts | ||||||
| if (GTSAM_BUILD_TIMING) | if (GTSAM_BUILD_TIMING) | ||||||
|  |  | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | gtsamAddTestsGlob(inference "test*.cpp" "" "gtsam") | ||||||
|  | @ -2,21 +2,8 @@ | ||||||
| file(GLOB linear_headers "*.h") | file(GLOB linear_headers "*.h") | ||||||
| install(FILES ${linear_headers} DESTINATION include/gtsam/linear) | install(FILES ${linear_headers} DESTINATION include/gtsam/linear) | ||||||
| 
 | 
 | ||||||
| # Files to exclude from compilation of tests and timing scripts |  | ||||||
| set(linear_excluded_files |  | ||||||
| # "${CMAKE_CURRENT_SOURCE_DIR}/tests/testTypedDiscreteFactor.cpp" # Example of excluding a test |  | ||||||
| #    ""  # Add to this list, with full path, to exclude |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| # Build tests | # Build tests | ||||||
| if (GTSAM_BUILD_TESTS) | add_subdirectory(tests) | ||||||
|     gtsam_add_subdir_tests(linear "gtsam" "gtsam" "${linear_excluded_files}")  |  | ||||||
| endif(GTSAM_BUILD_TESTS) |  | ||||||
| 
 |  | ||||||
| if(MSVC) |  | ||||||
| 	set_property(SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/tests/testSerializationLinear.cpp" |  | ||||||
| 		APPEND PROPERTY COMPILE_FLAGS "/bigobj") |  | ||||||
| endif() |  | ||||||
| 
 | 
 | ||||||
| # Build timing scripts | # Build timing scripts | ||||||
| if (GTSAM_BUILD_TIMING) | if (GTSAM_BUILD_TIMING) | ||||||
|  |  | ||||||
|  | @ -0,0 +1,6 @@ | ||||||
|  | gtsamAddTestsGlob(linear "test*.cpp" "" "gtsam") | ||||||
|  | 
 | ||||||
|  | if(MSVC) | ||||||
|  | 	set_property(SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/testSerializationLinear.cpp" | ||||||
|  | 		APPEND PROPERTY COMPILE_FLAGS "/bigobj") | ||||||
|  | endif() | ||||||
|  | @ -2,13 +2,8 @@ | ||||||
| file(GLOB navigation_headers "*.h") | file(GLOB navigation_headers "*.h") | ||||||
| install(FILES ${navigation_headers} DESTINATION include/gtsam/navigation) | install(FILES ${navigation_headers} DESTINATION include/gtsam/navigation) | ||||||
| 
 | 
 | ||||||
| # Exclude tests that don't work |  | ||||||
| set (navigation_excluded_tests "") |  | ||||||
| 
 |  | ||||||
| # Add all tests | # Add all tests | ||||||
| if (GTSAM_BUILD_TESTS) | add_subdirectory(tests) | ||||||
| 	gtsam_add_subdir_tests(navigation "gtsam" "gtsam" "${navigation_excluded_tests}")  |  | ||||||
| endif() |  | ||||||
| 
 | 
 | ||||||
| # Build timing scripts | # Build timing scripts | ||||||
| if (GTSAM_BUILD_TIMING) | if (GTSAM_BUILD_TIMING) | ||||||
|  |  | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | gtsamAddTestsGlob(navigation "test*.cpp" "" "gtsam") | ||||||
|  | @ -2,16 +2,8 @@ | ||||||
| file(GLOB nonlinear_headers "*.h") | file(GLOB nonlinear_headers "*.h") | ||||||
| install(FILES ${nonlinear_headers} DESTINATION include/gtsam/nonlinear) | install(FILES ${nonlinear_headers} DESTINATION include/gtsam/nonlinear) | ||||||
| 
 | 
 | ||||||
| # Files to exclude from compilation of tests and timing scripts |  | ||||||
| set(nonlinear_excluded_files |  | ||||||
| # "${CMAKE_CURRENT_SOURCE_DIR}/tests/testTypedDiscreteFactor.cpp" # Example of excluding a test      |  | ||||||
|     ""  # Add to this list, with full path, to exclude |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| # Build tests | # Build tests | ||||||
| if (GTSAM_BUILD_TESTS) | add_subdirectory(tests) | ||||||
|     gtsam_add_subdir_tests(nonlinear "gtsam" "gtsam" "${nonlinear_excluded_files}")  |  | ||||||
| endif(GTSAM_BUILD_TESTS) |  | ||||||
| 
 | 
 | ||||||
| # Build timing scripts | # Build timing scripts | ||||||
| if (GTSAM_BUILD_TIMING) | if (GTSAM_BUILD_TIMING) | ||||||
|  |  | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | gtsamAddTestsGlob(nonlinear "test*.cpp" "" "gtsam") | ||||||
|  | @ -4,19 +4,10 @@ set (slam_excluded_headers #"") | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| file(GLOB slam_headers "*.h") | file(GLOB slam_headers "*.h") | ||||||
| list(REMOVE_ITEM slam_headers ${slam_excluded_headers}) |  | ||||||
| install(FILES ${slam_headers} DESTINATION include/gtsam/slam) | install(FILES ${slam_headers} DESTINATION include/gtsam/slam) | ||||||
| 
 | 
 | ||||||
| # Files to exclude from compilation of tests and timing scripts |  | ||||||
| set(slam_excluded_files |  | ||||||
|  "${CMAKE_CURRENT_SOURCE_DIR}/tests/testSerialization.cpp"       |  | ||||||
| #    ""  # Add to this list, with full path, to exclude |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| # Build tests | # Build tests | ||||||
| if (GTSAM_BUILD_TESTS) | add_subdirectory(tests) | ||||||
|     gtsam_add_subdir_tests(slam "gtsam" "gtsam" "${slam_excluded_files}")  |  | ||||||
| endif(GTSAM_BUILD_TESTS) |  | ||||||
| 
 | 
 | ||||||
| # Build timing scripts | # Build timing scripts | ||||||
| if (GTSAM_BUILD_TIMING) | if (GTSAM_BUILD_TIMING) | ||||||
|  |  | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | gtsamAddTestsGlob(slam "test*.cpp" "" "gtsam") | ||||||
|  | @ -2,16 +2,8 @@ | ||||||
| file(GLOB symbolic_headers "*.h") | file(GLOB symbolic_headers "*.h") | ||||||
| install(FILES ${symbolic_headers} DESTINATION include/gtsam/symbolic) | install(FILES ${symbolic_headers} DESTINATION include/gtsam/symbolic) | ||||||
| 
 | 
 | ||||||
| # Files to exclude from compilation of tests and timing scripts |  | ||||||
| set(symbolic_excluded_files |  | ||||||
| # "${CMAKE_CURRENT_SOURCE_DIR}/tests/testTypedDiscreteFactor.cpp" # Example of excluding a test      |  | ||||||
|     ""  # Add to this list, with full path, to exclude |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| # Build tests | # Build tests | ||||||
| if (GTSAM_BUILD_TESTS) | add_subdirectory(tests) | ||||||
|     gtsam_add_subdir_tests(symbolic "gtsam" "gtsam" "${symbolic_excluded_files}")  |  | ||||||
| endif(GTSAM_BUILD_TESTS) |  | ||||||
| 
 | 
 | ||||||
| # Build timing scripts | # Build timing scripts | ||||||
| if (GTSAM_BUILD_TIMING) | if (GTSAM_BUILD_TIMING) | ||||||
|  |  | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | gtsamAddTestsGlob(symbolic "test*.cpp" "" "gtsam") | ||||||
|  | @ -2,16 +2,8 @@ | ||||||
| file(GLOB base_headers "*.h") | file(GLOB base_headers "*.h") | ||||||
| install(FILES ${base_headers} DESTINATION include/gtsam_unstable/base) | install(FILES ${base_headers} DESTINATION include/gtsam_unstable/base) | ||||||
| 
 | 
 | ||||||
| set (base_full_libs |  | ||||||
|     gtsam |  | ||||||
|     gtsam_unstable) |  | ||||||
| 
 |  | ||||||
| # Exclude tests that don't work |  | ||||||
| set (base_excluded_tests "") |  | ||||||
| 
 |  | ||||||
| # Add all tests | # Add all tests | ||||||
| gtsam_add_subdir_tests(base_unstable "${base_full_libs}" "${base_full_libs}" "${base_excluded_tests}")  | add_subdirectory(tests) | ||||||
| add_dependencies(check.unstable check.base_unstable) |  | ||||||
| 
 | 
 | ||||||
| # Build timing scripts | # Build timing scripts | ||||||
| if (GTSAM_BUILD_TIMING) | if (GTSAM_BUILD_TIMING) | ||||||
|  |  | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | gtsamAddTestsGlob(base_unstable "test*.cpp" "" "gtsam_unstable") | ||||||
|  | @ -2,41 +2,8 @@ | ||||||
| file(GLOB discrete_headers "*.h") | file(GLOB discrete_headers "*.h") | ||||||
| install(FILES ${discrete_headers} DESTINATION include/gtsam_unstable/discrete) | install(FILES ${discrete_headers} DESTINATION include/gtsam_unstable/discrete) | ||||||
| 
 | 
 | ||||||
| set (discrete_full_libs |  | ||||||
|     gtsam |  | ||||||
|     gtsam_unstable) |  | ||||||
| 
 |  | ||||||
| # Exclude tests that don't work |  | ||||||
| #set (discrete_excluded_tests  |  | ||||||
| #"${CMAKE_CURRENT_SOURCE_DIR}/tests/testScheduler.cpp" |  | ||||||
| #) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| # Add all tests | # Add all tests | ||||||
| gtsam_add_subdir_tests(discrete_unstable "${discrete_full_libs}" "${discrete_full_libs}" "${discrete_excluded_tests}")  | add_subdirectory(tests) | ||||||
| add_dependencies(check.unstable check.discrete_unstable) |  | ||||||
| 
 | 
 | ||||||
| # List examples to build - comment out here to exclude from compilation | # Add examples | ||||||
| set(discrete_unstable_examples | add_subdirectory(examples) | ||||||
| schedulingExample |  | ||||||
| schedulingQuals12 |  | ||||||
| schedulingQuals13 |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| if (GTSAM_BUILD_EXAMPLES) |  | ||||||
|     foreach(example ${discrete_unstable_examples}) |  | ||||||
|     	add_executable(${example} "examples/${example}.cpp") |  | ||||||
|     	 |  | ||||||
|     	# Disable building during make all/install |  | ||||||
|         if (GTSAM_ENABLE_INSTALL_EXAMPLE_FIX) |  | ||||||
|             set_target_properties(${example} PROPERTIES EXCLUDE_FROM_ALL ON) |  | ||||||
|         endif() |  | ||||||
|     	 |  | ||||||
| 		if(NOT MSVC AND NOT XCODE_VERSION) |  | ||||||
| 			add_dependencies(examples ${example}) |  | ||||||
| 			add_custom_target(${example}.run ${EXECUTABLE_OUTPUT_PATH}${example} ${ARGN}) |  | ||||||
| 		endif() |  | ||||||
|     	 |  | ||||||
|     	target_link_libraries(${example} gtsam gtsam_unstable) |  | ||||||
|     endforeach(example) |  | ||||||
| endif (GTSAM_BUILD_EXAMPLES) |  | ||||||
|  |  | ||||||
|  | @ -0,0 +1,5 @@ | ||||||
|  | set (excluded_examples | ||||||
|  |     # fileToExclude.cpp | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | gtsamAddExamplesGlob("*.cpp" "${excluded_examples}" "gtsam_unstable") | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | gtsamAddTestsGlob(discrete_unstable "test*.cpp" "" "gtsam_unstable") | ||||||
|  | @ -2,14 +2,5 @@ | ||||||
| file(GLOB dynamics_headers "*.h") | file(GLOB dynamics_headers "*.h") | ||||||
| install(FILES ${dynamics_headers} DESTINATION include/gtsam_unstable/dynamics) | install(FILES ${dynamics_headers} DESTINATION include/gtsam_unstable/dynamics) | ||||||
| 
 | 
 | ||||||
| # Components to link tests in this subfolder against |  | ||||||
| set (dynamics_full_libs |  | ||||||
|     gtsam |  | ||||||
|     gtsam_unstable) |  | ||||||
| 
 |  | ||||||
| # Exclude tests that don't work |  | ||||||
| set (dynamics_excluded_tests "") |  | ||||||
| 
 |  | ||||||
| # Add all tests | # Add all tests | ||||||
| gtsam_add_subdir_tests(dynamics_unstable "${dynamics_full_libs}" "${dynamics_full_libs}" "${dynamics_excluded_tests}")  | add_subdirectory(tests) | ||||||
| add_dependencies(check.unstable check.dynamics_unstable) |  | ||||||
|  |  | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | gtsamAddTestsGlob(dynamics_unstable "test*.cpp" "" "gtsam_unstable") | ||||||
|  | @ -1,32 +1,5 @@ | ||||||
| if(NOT MSVC) | set (excluded_examples | ||||||
|   add_custom_target(unstable_examples) |     # fileToExclude.cpp | ||||||
| endif() | ) | ||||||
| 
 |  | ||||||
| # Build example executables |  | ||||||
| FILE(GLOB example_srcs "*.cpp") |  | ||||||
| foreach(example_src ${example_srcs} ) |  | ||||||
|     get_filename_component(example_base ${example_src} NAME_WE) |  | ||||||
|     set( example_bin ${example_base} ) |  | ||||||
|     message(STATUS "Adding Example ${example_bin}") |  | ||||||
| 	if(NOT MSVC) |  | ||||||
|       add_dependencies(examples ${example_bin}) |  | ||||||
| 	endif() |  | ||||||
|     add_executable(${example_bin} ${example_src}) |  | ||||||
|      |  | ||||||
|     # Disable building during make all/install |  | ||||||
|     if (GTSAM_DISABLE_EXAMPLES_ON_INSTALL) |  | ||||||
|         set_target_properties(${example_bin} PROPERTIES EXCLUDE_FROM_ALL ON) |  | ||||||
|     endif() |  | ||||||
|      |  | ||||||
|     target_link_libraries(${example_bin} gtsam gtsam_unstable) |  | ||||||
| 	if(NOT MSVC AND NOT XCODE_VERSION) |  | ||||||
|       add_custom_target(${example_bin}.run ${EXECUTABLE_OUTPUT_PATH}${example_bin} ${ARGN}) |  | ||||||
| 	endif() |  | ||||||
| 	 |  | ||||||
| 	# Set up Visual Studio folder |  | ||||||
| 	if(MSVC) |  | ||||||
| 	  set_property(TARGET ${example_bin} PROPERTY FOLDER "Examples") |  | ||||||
| 	endif() |  | ||||||
| 
 |  | ||||||
| endforeach(example_src) |  | ||||||
| 
 | 
 | ||||||
|  | gtsamAddExamplesGlob("*.cpp" "${excluded_examples}" "gtsam_unstable") | ||||||
|  |  | ||||||
|  | @ -2,14 +2,5 @@ | ||||||
| file(GLOB geometry_headers "*.h") | file(GLOB geometry_headers "*.h") | ||||||
| install(FILES ${geometry_headers} DESTINATION include/gtsam_unstable/geometry) | install(FILES ${geometry_headers} DESTINATION include/gtsam_unstable/geometry) | ||||||
| 
 | 
 | ||||||
| # Components to link tests in this subfolder against |  | ||||||
| set (geometry_full_libs |  | ||||||
|     gtsam |  | ||||||
|     gtsam_unstable) |  | ||||||
| 
 |  | ||||||
| # Exclude tests that don't work |  | ||||||
| set (geometry_excluded_tests "") |  | ||||||
| 
 |  | ||||||
| # Add all tests | # Add all tests | ||||||
| gtsam_add_subdir_tests(geometry_unstable "${geometry_full_libs}" "${geometry_full_libs}" "${geometry_excluded_tests}")  | add_subdirectory(tests) | ||||||
| add_dependencies(check.unstable check.geometry_unstable) |  | ||||||
|  |  | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | gtsamAddTestsGlob(geometry_unstable "test*.cpp" "" "gtsam_unstable") | ||||||
|  | @ -2,18 +2,5 @@ | ||||||
| file(GLOB nonlinear_headers "*.h") | file(GLOB nonlinear_headers "*.h") | ||||||
| install(FILES ${nonlinear_headers} DESTINATION include/gtsam_unstable/nonlinear) | install(FILES ${nonlinear_headers} DESTINATION include/gtsam_unstable/nonlinear) | ||||||
| 
 | 
 | ||||||
| # Components to link tests in this subfolder against |  | ||||||
| set (nonlinear_full_libs |  | ||||||
| gtsam |  | ||||||
| gtsam_unstable) |  | ||||||
| 
 |  | ||||||
| # Exclude tests that don't work |  | ||||||
| set (nonlinear_excluded_tests #"") |  | ||||||
| #"${CMAKE_CURRENT_SOURCE_DIR}/tests/testConcurrentIncrementalFilter.cpp"  |  | ||||||
| #"${CMAKE_CURRENT_SOURCE_DIR}/tests/testIncrementalFixedLagSmoother.cpp" |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| # Add all tests | # Add all tests | ||||||
| gtsam_add_subdir_tests(nonlinear_unstable "${nonlinear_full_libs}" "${nonlinear_full_libs}" "${nonlinear_excluded_tests}") | add_subdirectory(tests) | ||||||
| add_dependencies(check.unstable check.nonlinear_unstable) |  | ||||||
|  |  | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | gtsamAddTestsGlob(nonlinear_unstable "test*.cpp" "" "gtsam_unstable") | ||||||
|  | @ -7,16 +7,5 @@ file(GLOB slam_headers "*.h") | ||||||
| list(REMOVE_ITEM slam_headers ${slam_excluded_headers}) | list(REMOVE_ITEM slam_headers ${slam_excluded_headers}) | ||||||
| install(FILES ${slam_headers} DESTINATION include/gtsam_unstable/slam) | install(FILES ${slam_headers} DESTINATION include/gtsam_unstable/slam) | ||||||
| 
 | 
 | ||||||
| # Components to link tests in this subfolder against |  | ||||||
| set (slam_full_libs |  | ||||||
|     gtsam |  | ||||||
|     gtsam_unstable) |  | ||||||
| 
 |  | ||||||
| # Exclude tests that don't work |  | ||||||
| set (slam_excluded_tests |  | ||||||
|     "${CMAKE_CURRENT_SOURCE_DIR}/tests/testSerialization.cpp" |  | ||||||
| #    ""  # Add to this list, with full path, to exclude |  | ||||||
| ) |  | ||||||
| # Add all tests | # Add all tests | ||||||
| gtsam_add_subdir_tests(slam_unstable "${slam_full_libs}" "${slam_full_libs}" "${slam_excluded_tests}")  | add_subdirectory(tests) | ||||||
| add_dependencies(check.unstable check.slam_unstable) |  | ||||||
|  |  | ||||||
|  | @ -0,0 +1,7 @@ | ||||||
|  | 
 | ||||||
|  | # Exclude tests that don't work | ||||||
|  | set (slam_excluded_tests | ||||||
|  |     testSerialization.cpp | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | gtsamAddTestsGlob(slam_unstable "test*.cpp" "${slam_excluded_tests}" "gtsam_unstable") | ||||||
|  | @ -1,31 +1,19 @@ | ||||||
| # Assemble local libraries |  | ||||||
| set (tests_full_libs |  | ||||||
|     gtsam |  | ||||||
|     CppUnitLite) |  | ||||||
| 
 |  | ||||||
| # exclude certain files | # exclude certain files | ||||||
| # note the source dir on each  | # note the source dir on each  | ||||||
| set (tests_exclude | set (tests_exclude "") | ||||||
|     #"${CMAKE_CURRENT_SOURCE_DIR}/testOccupancyGrid.cpp" |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") # might not be best test - Richard & Jason & Frank | if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") # might not be best test - Richard & Jason & Frank | ||||||
| 	# clang linker segfaults on large testSerializationSLAM  | 	# clang linker segfaults on large testSerializationSLAM  | ||||||
| 	list (APPEND tests_exclude "${CMAKE_CURRENT_SOURCE_DIR}/testSerializationSLAM.cpp")  | 	list (APPEND tests_exclude "testSerializationSLAM.cpp")  | ||||||
| endif() | endif() | ||||||
| 
 | 
 | ||||||
| # Build tests | # Build tests | ||||||
| if (GTSAM_BUILD_TESTS) | gtsamAddTestsGlob(tests "test*.cpp" "${tests_exclude}" "gtsam") | ||||||
|     # Subdirectory target for tests |  | ||||||
|     add_custom_target(check.tests COMMAND ${CMAKE_CTEST_COMMAND}) |  | ||||||
|     set(is_test TRUE) |  | ||||||
| 
 | 
 | ||||||
|     # Build grouped tests | if(MSVC) | ||||||
|     gtsam_add_grouped_scripts("tests"               # Use subdirectory as group label | 	set_property(SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/testSerializationSLAM.cpp" | ||||||
|     "test*.cpp;*.h" check "Test"                      # Standard for all tests | 		APPEND PROPERTY COMPILE_FLAGS "/bigobj") | ||||||
|     "${tests_full_libs}" "${tests_full_libs}" "${tests_exclude}"  # Pass in linking and exclusion lists | endif() | ||||||
|     ${is_test})                                         # Set all as tests |  | ||||||
| endif (GTSAM_BUILD_TESTS) |  | ||||||
| 
 | 
 | ||||||
| # Build timing scripts | # Build timing scripts | ||||||
| if (GTSAM_BUILD_TIMING) | if (GTSAM_BUILD_TIMING) | ||||||
|  | @ -39,8 +27,3 @@ if (GTSAM_BUILD_TIMING) | ||||||
|     "${tests_full_libs}" "${tests_full_libs}" "${tests_exclude}"   # Pass in linking and exclusion lists |     "${tests_full_libs}" "${tests_full_libs}" "${tests_exclude}"   # Pass in linking and exclusion lists | ||||||
|     ${is_test}) |     ${is_test}) | ||||||
| endif (GTSAM_BUILD_TIMING) | endif (GTSAM_BUILD_TIMING) | ||||||
| 
 |  | ||||||
| if(MSVC) |  | ||||||
| 	set_property(SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/testSerializationSLAM.cpp" |  | ||||||
| 		APPEND PROPERTY COMPILE_FLAGS "/bigobj") |  | ||||||
| endif() |  | ||||||
|  |  | ||||||
|  | @ -31,9 +31,5 @@ set(GTSAM_EXPORTED_TARGETS "${GTSAM_EXPORTED_TARGETS}" PARENT_SCOPE) | ||||||
| install(FILES matlab.h DESTINATION include/wrap) | install(FILES matlab.h DESTINATION include/wrap) | ||||||
| 
 | 
 | ||||||
| # Build tests | # Build tests | ||||||
| if (GTSAM_BUILD_TESTS) | add_subdirectory(tests) | ||||||
|     set(wrap_local_libs wrap_lib ${WRAP_BOOST_LIBRARIES})  |  | ||||||
|     gtsam_add_subdir_tests("wrap" "${wrap_local_libs}" "${wrap_local_libs}" "")  |  | ||||||
| endif(GTSAM_BUILD_TESTS) |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | gtsamAddTestsGlob(wrap "test*.cpp" "" "wrap_lib") | ||||||
		Loading…
	
		Reference in New Issue