Fix and improve code for finding CppUnit

* Remove `FORCE` in initialization of cache variables as this makes the
  library/include dir effectively *not* configurable
* Try using `find_package()` as the vcpkg package provides a CMake module
This commit is contained in:
Martchus 2023-01-31 22:36:21 +01:00
parent 25e4eebb64
commit b9b8bfc62a
1 changed files with 18 additions and 10 deletions

View File

@ -14,10 +14,10 @@ if (NOT META_NO_CPP_UNIT)
# make cppunit library/include dir configurable
set(CPP_UNIT_LIB
NOTFOUND
CACHE FILEPATH "cppunit lib" FORCE)
CACHE FILEPATH "cppunit lib")
set(CPP_UNIT_INCLUDE_DIR
NOTFOUND
CACHE FILEPATH "cppunit include dir" FORCE)
CACHE FILEPATH "cppunit include dir")
# set default for minimum version (only checked when using pkg-config)
if (NOT META_REQUIRED_CPP_UNIT_VERSION)
@ -31,20 +31,28 @@ if (NOT META_NO_CPP_UNIT)
if (CPP_UNIT_CONFIG_${META_PROJECT_NAME}_FOUND)
set(CPP_UNIT_LIB
"${CPP_UNIT_CONFIG_${META_PROJECT_NAME}_LDFLAGS_OTHER}" "${CPP_UNIT_CONFIG_${META_PROJECT_NAME}_LIBRARIES}"
CACHE FILEPATH "cppunit lib" FORCE)
CACHE FILEPATH "CppUnit library" FORCE)
set(CPP_UNIT_INCLUDE_DIR
${CPP_UNIT_CONFIG_${META_PROJECT_NAME}_INCLUDE_DIRS}
CACHE FILEPATH "cppunit include dir" FORCE)
CACHE FILEPATH "CppUnit include dir" FORCE)
link_directories(${CPP_UNIT_CONFIG_${META_PROJECT_NAME}_LIBRARY_DIRS})
else ()
# fall back to find_library
find_library(DETECTED_CPP_UNIT_LIB cppunit)
set(CPP_UNIT_LIB
"${DETECTED_CPP_UNIT_LIB}"
CACHE FILEPATH "cppunit lib" FORCE)
endif ()
endif ()
# fall back to find_package (as vcpkg provides one)
if (NOT CPP_UNIT_LIB AND NOT CPP_UNIT_INCLUDE_DIR)
find_package(CppUnit CONFIG)
if (TARGET CppUnit)
set(CPP_UNIT_LIB CppUnit CACHE STRING "CppUnit target" FORCE)
endif ()
endif ()
# fall back to find_library
if (NOT CPP_UNIT_LIB AND NOT CPP_UNIT_INCLUDE_DIR)
find_library(DETECTED_CPP_UNIT_LIB cppunit)
set(CPP_UNIT_LIB "${DETECTED_CPP_UNIT_LIB}" CACHE FILEPATH "CppUnit library" FORCE)
endif ()
if (NOT CPP_UNIT_LIB)
message(WARNING "Unable to add test target because cppunit could not be located.")
set(META_HAVE_TESTS NO)