diff options
author | Benoit Jacob <jacob.benoit.1@gmail.com> | 2009-10-03 16:50:50 -0400 |
---|---|---|
committer | Benoit Jacob <jacob.benoit.1@gmail.com> | 2009-10-03 16:50:50 -0400 |
commit | a1d9b76dd54679bf0e2f6ac2faca27b7417c6bdd (patch) | |
tree | 447442b12331396f512d59f0e5e898e1156705ec /cmake | |
parent | 3e4cb080549c39d8af80ce4e9b086a93a55a8f6a (diff) |
add debug targets like debug_qr to build a specific test with debug info
remove the btest target, instead just do "make" since anyway we have to let "make" build the tests
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/EigenTesting.cmake | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/cmake/EigenTesting.cmake b/cmake/EigenTesting.cmake index d4e0678f9..337e298c0 100644 --- a/cmake/EigenTesting.cmake +++ b/cmake/EigenTesting.cmake @@ -27,7 +27,11 @@ endmacro(ei_add_property) # void test_<testname>() { ... } # # this macro add an executable test_<testname> as well as a ctest test -# named <testname> +# named <testname>. +# +# it also adds another executable debug_<testname> that compiles in full debug mode +# and is not added to the test target. The idea is that when a test fails you want +# a quick way of rebuilding this specific test in full debug mode. # # On platforms with bash simply run: # "ctest -V" or "ctest -V -R <testname>" @@ -36,39 +40,50 @@ endmacro(ei_add_property) macro(ei_add_test testname) set(targetname test_${testname}) + set(debug_targetname debug_${testname}) set(filename ${testname}.cpp) add_executable(${targetname} ${filename}) - add_dependencies(btest ${targetname}) + add_executable(${debug_targetname} ${filename}) if(NOT EIGEN_NO_ASSERTION_CHECKING) if(MSVC) set_target_properties(${targetname} PROPERTIES COMPILE_FLAGS "/EHsc") + set_target_properties(${debug_targetname} PROPERTIES COMPILE_FLAGS "/EHsc") else(MSVC) set_target_properties(${targetname} PROPERTIES COMPILE_FLAGS "-fexceptions") + set_target_properties(${debug_targetname} PROPERTIES COMPILE_FLAGS "-fexceptions") endif(MSVC) option(EIGEN_DEBUG_ASSERTS "Enable debuging of assertions" OFF) if(EIGEN_DEBUG_ASSERTS) ei_add_target_property(${targetname} COMPILE_FLAGS "-DEIGEN_DEBUG_ASSERTS=1") + ei_add_target_property(${debug_targetname} COMPILE_FLAGS "-DEIGEN_DEBUG_ASSERTS=1") endif(EIGEN_DEBUG_ASSERTS) else(NOT EIGEN_NO_ASSERTION_CHECKING) ei_add_target_property(${targetname} COMPILE_FLAGS "-DEIGEN_NO_ASSERTION_CHECKING=1") + ei_add_target_property(${debug_targetname} COMPILE_FLAGS "-DEIGEN_NO_ASSERTION_CHECKING=1") endif(NOT EIGEN_NO_ASSERTION_CHECKING) + # let the user pass e.g. optimization flags, but don't apply them to the debug target if(${ARGC} GREATER 1) ei_add_target_property(${targetname} COMPILE_FLAGS "${ARGV1}") endif(${ARGC} GREATER 1) - ei_add_target_property(${targetname} COMPILE_FLAGS "-DEIGEN_TEST_FUNC=${testname}") + # for the debug target, add full debug options + if(CMAKE_COMPILER_IS_GNUCXX) + # O0 is in principle redundant here, but doesn't hurt + ei_add_target_property(${debug_targetname} COMPILE_FLAGS "-O0 -g3") + elseif(MSVC) + ei_add_target_property(${debug_targetname} COMPILE_FLAGS "/Od /Zi") + endif(CMAKE_COMPILER_IS_GNUCXX) - if(TEST_LIB) - target_link_libraries(${targetname} Eigen2) - endif(TEST_LIB) + ei_add_target_property(${targetname} COMPILE_FLAGS "-DEIGEN_TEST_FUNC=${testname}") + ei_add_target_property(${debug_targetname} COMPILE_FLAGS "-DEIGEN_TEST_FUNC=${testname}") target_link_libraries(${targetname} ${EXTERNAL_LIBS}) if(${ARGC} GREATER 2) |