Skip to content

Commit 00b4308

Browse files
committed
build(examples): link to specific opengl targets
Signed-off-by: Benn Snyder <[email protected]>
1 parent 6f64284 commit 00b4308

File tree

3 files changed

+29
-17
lines changed

3 files changed

+29
-17
lines changed
+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# For maximum compatibility, choose the OpenGL target dynamically.
2+
# On Linux with GLVND
3+
# OpenGL::OpenGL gives us just what we need without GLX or EGL
4+
# OpenGL::GL works as a fallback, but only if GLX is available
5+
# On Linux without GLVND, OSX, Windows
6+
# OpenGL::GL is the only option
7+
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.12)
8+
set(OPENGL_TARGET "$<IF:$<TARGET_EXISTS:OpenGL::OpenGL>,OpenGL::OpenGL,OpenGL::GL>")
9+
else()
10+
set(OPENGL_TARGET "$<IF:$<BOOL:${OPENGL_opengl_LIBRARY}>,OpenGL::OpenGL,OpenGL::GL>")
11+
endif()

examples/CMakeLists.txt

+12-11
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Packages needed for examples
33
######################################################################################
44

5-
cmake_minimum_required(VERSION 3.8.2)
5+
cmake_minimum_required(VERSION 3.10)
66

77
# These examples have no external dependencies and should always build.
88
add_executable(freenect-camtest camtest.c)
@@ -14,12 +14,11 @@ install(TARGETS freenect-camtest freenect-wavrecord
1414

1515
# Most viewers need pthreads and GLUT.
1616
set(THREADS_USE_PTHREADS_WIN32 true)
17-
set(OpenGL_GL_PREFERENCE "GLVND")
1817
find_package(Threads)
19-
find_package(OpenGL)
18+
find_package(OpenGL COMPONENTS OpenGL)
2019
find_package(GLUT)
2120

22-
if (Threads_FOUND AND OPENGL_FOUND AND GLUT_FOUND)
21+
if (Threads_FOUND AND OpenGL_OpenGL_FOUND AND GLUT_FOUND)
2322
include_directories(${THREADS_PTHREADS_INCLUDE_DIR} ${OPENGL_INCLUDE_DIR} ${GLUT_INCLUDE_DIR})
2423

2524
add_executable(freenect-glview glview.c)
@@ -28,11 +27,12 @@ if (Threads_FOUND AND OPENGL_FOUND AND GLUT_FOUND)
2827
add_executable(freenect-chunkview chunkview.c)
2928
add_executable(freenect-micview micview.c)
3029

31-
target_link_libraries(freenect-glview freenect OpenGL::GL GLUT::GLUT ${CMAKE_THREAD_LIBS_INIT} ${MATH_LIB})
32-
target_link_libraries(freenect-regview freenect OpenGL::GL GLUT::GLUT ${CMAKE_THREAD_LIBS_INIT} ${MATH_LIB})
33-
target_link_libraries(freenect-hiview freenect OpenGL::GL GLUT::GLUT ${CMAKE_THREAD_LIBS_INIT} ${MATH_LIB})
34-
target_link_libraries(freenect-chunkview freenect OpenGL::GL GLUT::GLUT ${CMAKE_THREAD_LIBS_INIT} ${MATH_LIB})
35-
target_link_libraries(freenect-micview freenect OpenGL::GL GLUT::GLUT ${CMAKE_THREAD_LIBS_INIT} ${MATH_LIB})
30+
include(ChooseOpenGLTarget)
31+
target_link_libraries(freenect-glview freenect "${OPENGL_TARGET}" GLUT::GLUT ${CMAKE_THREAD_LIBS_INIT} ${MATH_LIB})
32+
target_link_libraries(freenect-regview freenect "${OPENGL_TARGET}" GLUT::GLUT ${CMAKE_THREAD_LIBS_INIT} ${MATH_LIB})
33+
target_link_libraries(freenect-hiview freenect "${OPENGL_TARGET}" GLUT::GLUT ${CMAKE_THREAD_LIBS_INIT} ${MATH_LIB})
34+
target_link_libraries(freenect-chunkview freenect "${OPENGL_TARGET}" GLUT::GLUT ${CMAKE_THREAD_LIBS_INIT} ${MATH_LIB})
35+
target_link_libraries(freenect-micview freenect "${OPENGL_TARGET}" GLUT::GLUT ${CMAKE_THREAD_LIBS_INIT} ${MATH_LIB})
3636

3737
install(TARGETS freenect-glview freenect-regview freenect-hiview freenect-chunkview freenect-micview
3838
DESTINATION bin)
@@ -51,10 +51,11 @@ if (BUILD_C_SYNC)
5151
install(TARGETS freenect-regtest freenect-tiltdemo
5252
DESTINATION bin)
5353

54-
if (OPENGL_FOUND AND GLUT_FOUND)
54+
if (OpenGL_OpenGL_FOUND AND OPENGL_GLU_FOUND AND GLUT_FOUND)
5555
include_directories(${OPENGL_INCLUDE_DIR} ${GLUT_INCLUDE_DIR})
5656
add_executable(freenect-glpclview glpclview.c)
57-
target_link_libraries(freenect-glpclview freenect_sync OpenGL::GL OpenGL::GLU GLUT::GLUT ${MATH_LIB})
57+
include(ChooseOpenGLTarget)
58+
target_link_libraries(freenect-glpclview freenect_sync "${OPENGL_TARGET}" OpenGL::GLU GLUT::GLUT ${MATH_LIB})
5859
install(TARGETS freenect-glpclview
5960
DESTINATION bin)
6061
endif ()

wrappers/cpp/CMakeLists.txt

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
1-
cmake_minimum_required(VERSION 3.8.2)
1+
cmake_minimum_required(VERSION 3.10)
22

33
install(FILES libfreenect.hpp
44
DESTINATION ${PROJECT_INCLUDE_INSTALL_DIR})
55

66
if (BUILD_EXAMPLES)
77
set(THREADS_USE_PTHREADS_WIN32 true)
8-
set(OpenGL_GL_PREFERENCE "GLVND")
98
find_package(Threads)
10-
find_package(OpenGL)
9+
find_package(OpenGL COMPONENTS OpenGL)
1110
find_package(GLUT)
1211

13-
if (Threads_FOUND AND OPENGL_FOUND AND GLUT_FOUND)
12+
if (Threads_FOUND AND OpenGL_OpenGL_FOUND AND OPENGL_GLU_FOUND AND GLUT_FOUND)
1413
include_directories(. ${THREADS_PTHREADS_INCLUDE_DIR} ${OPENGL_INCLUDE_DIR} ${GLUT_INCLUDE_DIR})
1514

1615
add_executable(freenect-cppview cppview.cpp)
@@ -19,8 +18,9 @@ if (BUILD_EXAMPLES)
1918
target_compile_features(freenect-cppview PUBLIC cxx_std_11)
2019
target_compile_features(freenect-cpp_pcview PUBLIC cxx_std_11)
2120

22-
target_link_libraries(freenect-cppview freenect OpenGL::GL OpenGL::GLU GLUT::GLUT ${CMAKE_THREAD_LIBS_INIT} ${MATH_LIB})
23-
target_link_libraries(freenect-cpp_pcview freenect OpenGL::GL OpenGL::GLU GLUT::GLUT ${CMAKE_THREAD_LIBS_INIT} ${MATH_LIB})
21+
include(ChooseOpenGLTarget)
22+
target_link_libraries(freenect-cppview freenect "${OPENGL_TARGET}" OpenGL::GLU GLUT::GLUT ${CMAKE_THREAD_LIBS_INIT} ${MATH_LIB})
23+
target_link_libraries(freenect-cpp_pcview freenect "${OPENGL_TARGET}" OpenGL::GLU GLUT::GLUT ${CMAKE_THREAD_LIBS_INIT} ${MATH_LIB})
2424

2525
install(TARGETS freenect-cppview freenect-cpp_pcview
2626
DESTINATION bin)

0 commit comments

Comments
 (0)