CMake: Fix build with CMake 3.28 on macOS
FindWrapOpenGL.cmake assumed that IMPORTED_LOCATION is the absolute path of the library within the framework. That's not the case with CMake 3.28 anymore. There, IMPORTED_LOCATION is the absolute path of the framework directory. The relevant upstream CMake change is 6b01a27f901b5eb392955fea322cde44a1b782a3. Pick-to: 6.5 6.2 Change-Id: I6b702a28318e0978c56dec83c398965aa77ef020 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 0efea8020c1d221635aaa0a71529edb392cfe3cc) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
1bb4c33708
commit
9dbb4a8f81
@ -17,14 +17,18 @@ if (OpenGL_FOUND)
|
|||||||
|
|
||||||
add_library(WrapOpenGL::WrapOpenGL INTERFACE IMPORTED)
|
add_library(WrapOpenGL::WrapOpenGL INTERFACE IMPORTED)
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
|
# CMake 3.27 and older:
|
||||||
# On Darwin platforms FindOpenGL sets IMPORTED_LOCATION to the absolute path of the library
|
# On Darwin platforms FindOpenGL sets IMPORTED_LOCATION to the absolute path of the library
|
||||||
# within the framework. This ends up as an absolute path link flag, which we don't want,
|
# within the framework. This ends up as an absolute path link flag, which we don't want,
|
||||||
# because that makes our .prl files un-relocatable.
|
# because that makes our .prl files un-relocatable.
|
||||||
# Extract the framework path instead, and use that in INTERFACE_LINK_LIBRARIES,
|
# Extract the framework path instead, and use that in INTERFACE_LINK_LIBRARIES,
|
||||||
# which CMake ends up transforming into a reloctable -framework flag.
|
# which CMake ends up transforming into a relocatable -framework flag.
|
||||||
# See https://gitlab.kitware.com/cmake/cmake/-/issues/20871 for details.
|
# See https://gitlab.kitware.com/cmake/cmake/-/issues/20871 for details.
|
||||||
|
#
|
||||||
|
# CMake 3.28 and above:
|
||||||
|
# IMPORTED_LOCATION is the absolute path the the OpenGL.framework folder.
|
||||||
get_target_property(__opengl_fw_lib_path OpenGL::GL IMPORTED_LOCATION)
|
get_target_property(__opengl_fw_lib_path OpenGL::GL IMPORTED_LOCATION)
|
||||||
if(__opengl_fw_lib_path)
|
if(__opengl_fw_lib_path AND NOT __opengl_fw_lib_path MATCHES "/([^/]+)\\.framework$")
|
||||||
get_filename_component(__opengl_fw_path "${__opengl_fw_lib_path}" DIRECTORY)
|
get_filename_component(__opengl_fw_path "${__opengl_fw_lib_path}" DIRECTORY)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user