-
Notifications
You must be signed in to change notification settings - Fork 127
/
Copy pathCMakeLists.txt
105 lines (95 loc) · 3.3 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# NOTE: When adding examples here, add them to the list in doc/libraries.dox as well!
# These we install alongside the main binaries
set(MAINCLIENTS)
if(BUILD_WITH_OPENCV)
list(APPEND MAINCLIENTS Imaging)
endif()
# These are "extra"
set(CLIENTS
AnalogCallback
ButtonCallback
TrackerCallback
DisplayParameter
EyeTracker
Location2D
Direction
Locomotion
Gesture
MinimalInit
TrackerState
ViewerEyeSurfaces)
set(LIB_c osvrClientKit)
set(LIB_cpp osvrClientKitCpp)
foreach(name ${MAINCLIENTS} ${CLIENTS})
foreach(suffix c cpp)
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${name}.${suffix}")
add_executable(${name}_${suffix} ${name}.${suffix})
target_link_libraries(${name}_${suffix} ${LIB_${suffix}})
set_target_properties(${name}_${suffix} PROPERTIES
FOLDER "OSVR Example Clients")
endif()
endforeach()
endforeach()
if(BUILD_WITH_OPENCV)
target_link_libraries(Imaging_cpp opencv_core opencv_highgui)
endif()
target_link_libraries(ViewerEyeSurfaces_cpp osvr_cxx11_flags)
foreach(name ${MAINCLIENTS})
if(TARGET ${name}_cpp)
install(TARGETS ${name}_cpp
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ExampleClients)
endif()
if(TARGET ${name}_c)
if(NOT WIN32)
set_target_properties(${name}_c PROPERTIES
INSTALL_RPATH "${CMAKE_INSTALL_RPATH};${EXTRABINARIES_INSTALL_RPATH}")
endif()
install(TARGETS ${name}_c
RUNTIME DESTINATION ${EXTRA_SAMPLE_BINDIR} COMPONENT ExtraSampleBinaries)
endif()
endforeach()
foreach(name ${CLIENTS})
if(TARGET ${name}_cpp)
if(NOT WIN32)
set_target_properties(${name}_cpp PROPERTIES
INSTALL_RPATH "${CMAKE_INSTALL_RPATH};${EXTRABINARIES_INSTALL_RPATH}")
endif()
install(TARGETS ${name}_cpp
RUNTIME DESTINATION ${EXTRA_SAMPLE_BINDIR} COMPONENT ExtraSampleBinaries)
endif()
if(TARGET ${name}_c)
if(NOT WIN32)
set_target_properties(${name}_c PROPERTIES
INSTALL_RPATH "${CMAKE_INSTALL_RPATH};${EXTRABINARIES_INSTALL_RPATH}")
endif()
install(TARGETS ${name}_c
RUNTIME DESTINATION ${EXTRA_SAMPLE_BINDIR} COMPONENT ExtraSampleBinaries)
endif()
endforeach()
###
# Some examples should be run as tests
add_test(NAME DisplayParameter_runs
COMMAND DisplayParameter_cpp)
add_subdirectory(opengl-sdl)
if(BUILD_TESTING)
###
# Set up self-contained example test
set(CONFIG_FLAGS "-Dosvr_DIR=${PROJECT_BINARY_DIR}")
set(BUILD_FLAGS)
if(MSVC)
# TODO this is really for any multi-config generators, not just MSVC
set(BUILD_FLAGS --config $<CONFIGURATION>)
endif()
if(CMAKE_GENERATOR_TOOLSET)
set(CONFIG_FLAGS "${CONFIG_FLAGS} -T \"${CMAKE_GENERATOR_TOOLSET}\"")
endif()
configure_file(selfcontained_test.cmake "${CMAKE_CURRENT_BINARY_DIR}/selfcontained_test.cmake" @ONLY)
add_test(NAME StandaloneClientBuilds
COMMAND
"${CMAKE_COMMAND}"
"-DCONFIG_FLAGS=${CONFIG_FLAGS}"
"-DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}/selfcontained"
"-DBUILD_FLAGS=${BUILD_FLAGS}"
-P "${CMAKE_CURRENT_BINARY_DIR}/selfcontained_test.cmake"
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
endif()