gnucash maint: Improve test building with the Xcode generator.

John Ralls jralls at code.gnucash.org
Mon Mar 23 20:56:41 EDT 2020


Updated	 via  https://github.com/Gnucash/gnucash/commit/33902a67 (commit)
	from  https://github.com/Gnucash/gnucash/commit/8fc901fb (commit)



commit 33902a6793dd11f4ee64189a47d735a548948a7d
Author: John Ralls <jralls at ceridwen.us>
Date:   Mon Mar 23 17:52:26 2020 -0700

    Improve test building with the Xcode generator.
    
    Add CONFIGURATIONS keyword to unadorned tests, enables tests with
    multi-config generators.
    Add CONFIGURATION generator expression to libgtest.a and libgmock.a
    build directory specs when building with Xcode so that it can
    find them when building tests.

diff --git a/common/cmake_modules/GncAddTest.cmake b/common/cmake_modules/GncAddTest.cmake
index 31cc76217..cf75f23ec 100644
--- a/common/cmake_modules/GncAddTest.cmake
+++ b/common/cmake_modules/GncAddTest.cmake
@@ -78,7 +78,7 @@ function(gnc_add_test _TARGET _SOURCE_FILES TEST_INCLUDE_VAR_NAME TEST_LIBS_VAR_
     )
     set_tests_properties(${_TARGET} PROPERTIES ENVIRONMENT "GNC_UNINSTALLED=YES;GNC_BUILDDIR=${CMAKE_BINARY_DIR};${ARGN}")
   else()
-    add_test(NAME ${_TARGET} COMMAND ${_TARGET})
+    add_test(NAME ${_TARGET} COMMAND ${_TARGET} CONFIGURATIONS Debug;Release)
     set_tests_properties(${_TARGET} PROPERTIES ENVIRONMENT "GNC_UNINSTALLED=YES;GNC_BUILDDIR=${CMAKE_BINARY_DIR}")
   endif()
   add_dependencies(check ${_TARGET})
@@ -133,7 +133,11 @@ function(gnc_gtest_configure)
         "${GTEST_SRC_DIR}/src/gtest_main.cc"
         "${GTEST_SRC_DIR}/src/gtest-all.cc"
         PARENT_SCOPE)
-      set(GTEST_LIB "${CMAKE_BINARY_DIR}/common/test-core/libgtest.a" PARENT_SCOPE)
+      if (CMAKE_GENERATOR STREQUAL Xcode)
+        set(GTEST_LIB "${CMAKE_BINARY_DIR}/common/test-core/$<CONFIGURATION>/libgtest.a" PARENT_SCOPE)
+      else()
+        set(GTEST_LIB "${CMAKE_BINARY_DIR}/common/test-core/libgtest.a" PARENT_SCOPE)
+      endif()
     endif()
   else()
     message(FATAL_ERROR "GTEST not found. Please install it or set GTEST_ROOT or GMOCK_ROOT")
@@ -163,7 +167,11 @@ function(gnc_gtest_configure)
       unset(GMOCK_SRC_DIR CACHE)
     else()
       set(GMOCK_SRC "${GMOCK_MAIN_SRC_DIR}/gmock-all.cc" PARENT_SCOPE)
-      set(GMOCK_LIB "${CMAKE_BINARY_DIR}/common/test-core/libgmock.a" PARENT_SCOPE)
+      if (CMAKE_GENERATOR STREQUAL Xcode)
+        set(GMOCK_LIB "${CMAKE_BINARY_DIR}/common/test-core/$<CONFIGURATION>/libgmock.a" PARENT_SCOPE)
+      else()
+        set(GMOCK_LIB "${CMAKE_BINARY_DIR}/common/test-core/libgmock.a" PARENT_SCOPE)
+      endif()
     endif()
   else()
     message(FATAL_ERROR "GMOCK not found. Please install it or set GMOCK_ROOT")
diff --git a/libgnucash/backend/xml/test/CMakeLists.txt b/libgnucash/backend/xml/test/CMakeLists.txt
index df1e599c2..941e61828 100644
--- a/libgnucash/backend/xml/test/CMakeLists.txt
+++ b/libgnucash/backend/xml/test/CMakeLists.txt
@@ -98,5 +98,6 @@ set(test-real-data-env
 add_test(NAME test-real-data
    COMMAND ${CMAKE_COMMAND} -E env
     ${SHELL} ${CMAKE_CURRENT_SOURCE_DIR}/test-real-data.sh
+   CONFIGURATIONS Debug;Release
 )
 set_tests_properties(test-real-data PROPERTIES ENVIRONMENT "${test-real-data-env}")
diff --git a/libgnucash/engine/test/CMakeLists.txt b/libgnucash/engine/test/CMakeLists.txt
index 49d4b89f9..dea5049fb 100644
--- a/libgnucash/engine/test/CMakeLists.txt
+++ b/libgnucash/engine/test/CMakeLists.txt
@@ -19,7 +19,7 @@ endmacro()
 
 add_executable(test-link EXCLUDE_FROM_ALL test-link.c)
 target_link_libraries(test-link gnc-core-utils)
-add_test(NAME test-link COMMAND test-link)
+add_test(NAME test-link COMMAND test-link CONFIGURATIONS Debug;Release)
 add_dependencies(check test-link)
 
 #################################################



Summary of changes:
 common/cmake_modules/GncAddTest.cmake      | 14 +++++++++++---
 libgnucash/backend/xml/test/CMakeLists.txt |  1 +
 libgnucash/engine/test/CMakeLists.txt      |  2 +-
 3 files changed, 13 insertions(+), 4 deletions(-)



More information about the gnucash-changes mailing list