Skip to content

Commit 7ab18fd

Browse files
committed
Modernize FindUnitTest++.cmake, add pkg-config
The same old variables will be respected for setting the path, but the PREFERRED method is defining `-DUnitTest++_ROOT=/path/to` on the CMake command line. _ROOT variables are handled with extra intelligence by CMake. The find module will also attempt to locate the pkg-config file UnitTest++.pc, and if found will import its data.
1 parent 96b4ac4 commit 7ab18fd

File tree

2 files changed

+70
-39
lines changed

2 files changed

+70
-39
lines changed

cmake/Modules/FindUnitTest++.cmake

Lines changed: 64 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,59 @@
1-
# Locate UNITTEST
1+
# Locate UnitTest++
22
# This module defines
3-
# UNITTEST++_LIBRARY
4-
# UNITTEST++_FOUND, if false, do not try to link to gdal
5-
# UNITTEST++_INCLUDE_DIR, where to find the headers
6-
7-
FIND_PATH(UNITTEST++_INCLUDE_DIR UnitTest++.h
8-
${UNITTEST_DIR}/include/unittest++
9-
$ENV{UNITTEST_DIR}/include/unittest++
10-
$ENV{UNITTEST_DIR}/src
3+
# UnitTest++_FOUND, if successful
4+
# UnitTest++_LIBRARIES, the library path
5+
# UnitTest++_INCLUDE_DIRS, where to find the headers
6+
7+
find_package(PkgConfig QUIET)
8+
if(PKG_CONFIG_FOUND)
9+
pkg_check_modules(PC_UnitTest QUIET UnitTest++)
10+
set(UnitTest++_VERSION ${PC_UnitTest_VERSION})
11+
endif()
12+
13+
14+
FIND_PATH(UnitTest++_INCLUDE_DIRS UnitTest++.h
15+
DOC
16+
"Location of UnitTest++ header files"
17+
PATH_SUFFIXES
18+
unittest++
19+
UnitTest++ # Fedora, Arch
20+
unittest-cpp # openSUSE
21+
HINTS
22+
${PC_UnitTest++_INCLUDEDIR}
23+
${PC_UnitTest++_INCLUDE_DIRS}
24+
PATHS
25+
${UnitTest++_ROOT}
26+
${UNITTEST_DIR}
27+
$ENV{UNITTEST_DIR}/src
1128
$ENV{UNITTEST_DIR}
1229
~/Library/Frameworks
1330
/Library/Frameworks
14-
/usr/local/include
15-
/usr/include
16-
/usr/include/unittest++
17-
/usr/include/UnitTest++ # Fedora
18-
/usr/include/unittest-cpp # openSUSE
19-
/usr/local/include/UnitTest++/ # Arch
20-
/sw/include # Fink
21-
/opt/local/include # DarwinPorts
22-
/opt/local/include/UnitTest++
23-
/opt/csw/include # Blastwave
24-
/opt/include
31+
/usr/local
32+
/sw # Fink
33+
/opt
34+
/opt/local # DarwinPorts
35+
/opt/csw # Blastwave
2536
[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment]/include
26-
/usr/freeware/include
37+
/usr/freeware
2738
)
2839

29-
FIND_LIBRARY(UNITTEST++_LIBRARY
30-
NAMES unittest++ UnitTest++
31-
PATHS
32-
${UNITTEST_DIR}/lib
33-
$ENV{UNITTEST_DIR}/lib
34-
$ENV{UNITTEST_DIR}/build
40+
FIND_LIBRARY(UnitTest++_LIBRARIES
41+
NAMES unittest++ UnitTest++
42+
DOC
43+
"Location of UnitTest++ shared library"
44+
HINTS
45+
${PC_UnitTest++_LIBDIR}
46+
${PC_UnitTest++_LIBRARY_DIRS}
47+
PATHS
48+
${UnitTest++_ROOT}
49+
${UnitTest++_ROOT}/lib
50+
${UNITTEST_DIR}
3551
$ENV{UNITTEST_DIR}
52+
$ENV{UNITTEST_DIR}/lib
53+
$ENV{UNITTEST_DIR}/build
3654
~/Library/Frameworks
3755
/Library/Frameworks
3856
/usr/local/lib
39-
/usr/lib
40-
/usr/lib64/ # Fedora
4157
/sw/lib
4258
/opt/local/lib
4359
/opt/csw/lib
@@ -46,13 +62,24 @@ FIND_LIBRARY(UNITTEST++_LIBRARY
4662
/usr/freeware/lib64
4763
)
4864

49-
SET(UNITTEST++_FOUND "NO")
50-
IF(UNITTEST++_LIBRARY AND UNITTEST++_INCLUDE_DIR)
51-
SET(UNITTEST++_FOUND "YES")
52-
ENDIF(UNITTEST++_LIBRARY AND UNITTEST++_INCLUDE_DIR)
65+
if(UnitTest++_LIBRARIES AND UnitTest++_INCLUDE_DIRS)
66+
set(UnitTest++_FOUND TRUE)
67+
endif()
5368

5469
include(FindPackageHandleStandardArgs)
55-
# handle the QUIETLY and REQUIRED arguments and set UNITTEST++_FOUND to TRUE
56-
# if all listed variables are TRUE
57-
find_package_handle_standard_args(UNITTEST++ DEFAULT_MSG
58-
UNITTEST++_LIBRARY UNITTEST++_INCLUDE_DIR)
70+
find_package_handle_standard_args(UnitTest++
71+
REQUIRED_VARS
72+
UnitTest++_LIBRARIES
73+
UnitTest++_INCLUDE_DIRS
74+
VERSION_VAR
75+
UnitTest++_VERSION
76+
)
77+
78+
# Excessive backwards-compatibility paranoia
79+
set(UnitTest++_LIBRARY "${UnitTest++_LIBRARIES}" PARENT_SCOPE)
80+
set(UnitTest++_INCLUDE_DIR "${UnitTest++_INCLUDE_DIRS}" PARENT_SCOPE)
81+
# Even more excessive backwards-compatibility paranoia
82+
set(UNITTEST++_FOUND "${UnitTest++_FOUND}" PARENT_SCOPE)
83+
set(UNITTEST++_LIBRARY "${UnitTest++_LIBRARIES}" PARENT_SCOPE)
84+
set(UNITTEST++_INCLUDE_DIR "${UnitTest++_INCLUDE_DIRS}" PARENT_SCOPE)
85+

tests/CMakeLists.txt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,11 @@ if (NOT UnitTest++_FOUND)
4646
endif()
4747

4848
# Include UnitTest++ headers (needed for compile)
49-
include_directories(${UNITTEST++_INCLUDE_DIR})
49+
include_directories(${UnitTest++_INCLUDE_DIRS})
50+
51+
set_package_properties(UnitTest++ PROPERTIES
52+
TYPE RECOMMENDED
53+
PURPOSE "Unit testing framework")
5054

5155
################ IMAGE MAGICK ##################
5256
# Set the Quantum Depth that ImageMagick was built with (default to 16 bits)
@@ -125,7 +129,7 @@ add_executable(openshot-test
125129
${OPENSHOT_TEST_FILES} )
126130

127131
# Link libraries to the new executable
128-
target_link_libraries(openshot-test openshot ${UNITTEST++_LIBRARY})
132+
target_link_libraries(openshot-test openshot ${UnitTest++_LIBRARIES})
129133

130134
##### RUNNING TESTS (make os_test / make test) #####
131135
# Hook up the 'make os_test' target to the 'openshot-test' executable

0 commit comments

Comments
 (0)