From 471b05f35a9c57d7fa910cf9f11c7f5fdfbf2a93 Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Fri, 2 Mar 2018 18:52:58 +0100 Subject: Fix scriptableapplication to build on macOS with framework Qt In case of a Qt framework build, shiboken needs to be passed a --framework-include-paths=foo parameter pointing to the Qt framework libdir. This is used by the C++ parser to resolve framework include paths. Task-number: PYSIDE-623 Change-Id: I38cf34a51102265056aea8718ad059aea3438354 Reviewed-by: Friedemann Kleint --- examples/scriptableapplication/CMakeLists.txt | 9 +++++++++ examples/scriptableapplication/scriptableapplication.pro | 3 +++ 2 files changed, 12 insertions(+) diff --git a/examples/scriptableapplication/CMakeLists.txt b/examples/scriptableapplication/CMakeLists.txt index 40e29346a..6641d77c6 100644 --- a/examples/scriptableapplication/CMakeLists.txt +++ b/examples/scriptableapplication/CMakeLists.txt @@ -58,6 +58,15 @@ foreach(INCLUDE_DIR ${QT_INCLUDE_DIRS}) list(APPEND INCLUDES "-I${INCLUDE_DIR}") endforeach() +# On macOS, check if Qt is a framework build. This affects how include paths should be handled. +get_target_property(QtCore_is_framework Qt5::Core FRAMEWORK) +if (QtCore_is_framework) + get_target_property(qt_core_library_location Qt5::Core LOCATION) + get_filename_component(qt_core_library_location_dir "${qt_core_library_location}" DIRECTORY) + get_filename_component(lib_dir "${qt_core_library_location_dir}/../" ABSOLUTE) + list(APPEND INCLUDES "--framework-include-paths=${lib_dir}") +endif() + # Set up the options to pass to shiboken. set(WRAPPED_HEADER ${CMAKE_SOURCE_DIR}/wrappedclasses.h) set(TYPESYSTEM_FILE ${CMAKE_SOURCE_DIR}/scriptableapplication.xml) diff --git a/examples/scriptableapplication/scriptableapplication.pro b/examples/scriptableapplication/scriptableapplication.pro index 9f888f6a0..bcb05c115 100644 --- a/examples/scriptableapplication/scriptableapplication.pro +++ b/examples/scriptableapplication/scriptableapplication.pro @@ -12,6 +12,9 @@ TYPESYSTEM_FILE = scriptableapplication.xml QT_INCLUDEPATHS = -I$$[QT_INSTALL_HEADERS] -I$$[QT_INSTALL_HEADERS]/QtCore \ -I$$[QT_INSTALL_HEADERS]/QtGui -I$$[QT_INSTALL_HEADERS]/QtWidgets +# On macOS, check if Qt is a framework build. This affects how include paths should be handled. +qtConfig(framework): QT_INCLUDEPATHS += --framework-include-paths=$$[QT_INSTALL_LIBS] + SHIBOKEN_OPTIONS = --generator-set=shiboken --enable-parent-ctor-heuristic \ --enable-pyside-extensions --enable-return-value-heuristic --use-isnull-as-nb_nonzero \ $$QT_INCLUDEPATHS -I$$PWD -T$$PWD -T$$PYSIDE2/typesystems --output-directory=$$OUT_PWD -- cgit v1.2.3