From ce5b6c9f64499dba504c4c87e4100aad78b37c42 Mon Sep 17 00:00:00 2001 From: Romain LE JEUNE Date: Mon, 17 Oct 2022 15:46:13 +0200 Subject: [PATCH] GODT-1942: Use qmake to find the QT6DIR --- Makefile | 5 +---- internal/frontend/bridge-gui/FindQt.cmake | 8 ++++++++ .../bridge-gui-tester/CMakeLists.txt | 8 +------- .../bridge-gui/bridge-gui/CMakeLists.txt | 8 +------- .../bridge-gui/bridge-gui/DeployDarwin.cmake | 20 +++++++++---------- .../bridge-gui/bridge-gui/DeployLinux.cmake | 4 ++-- .../bridge-gui/bridge-gui/DeployWindows.cmake | 10 +++++----- .../bridge-gui/bridgepp/CMakeLists.txt | 5 +---- 8 files changed, 29 insertions(+), 39 deletions(-) create mode 100644 internal/frontend/bridge-gui/FindQt.cmake diff --git a/Makefile b/Makefile index 5fa89b66..ec902815 100644 --- a/Makefile +++ b/Makefile @@ -197,7 +197,7 @@ check-has-go: check_is_installed=if ! which $(1) > /dev/null; then echo "Please install $(1)"; exit 1; fi -check-build-essentials: check-qt-dir +check-build-essentials: @$(call check_is_installed,zip) @$(call check_is_installed,unzip) @$(call check_is_installed,tar) @@ -207,9 +207,6 @@ ifneq "${GOOS}" "windows" @$(call check_is_installed,ninja) endif -check-qt-dir: - @if ! ls "${QT6DIR}/bin/qt.conf" > /dev/null; then echo "Please set QT6DIR"; exit 1; fi - add-license: ./utils/missing_license.sh add diff --git a/internal/frontend/bridge-gui/FindQt.cmake b/internal/frontend/bridge-gui/FindQt.cmake new file mode 100644 index 00000000..ab7f8a1a --- /dev/null +++ b/internal/frontend/bridge-gui/FindQt.cmake @@ -0,0 +1,8 @@ +find_program(QMAKE_EXE "qmake") +if (NOT QMAKE_EXE) + message(FATAL_ERROR "Could not locate qmake executable, make sur you have Qt 6 installed in that qmake is in your PATH environment variable.") +endif() +message(STATUS "Found qmake at ${QMAKE_EXE}") +execute_process(COMMAND "${QMAKE_EXE}" -query QT_INSTALL_PREFIX OUTPUT_VARIABLE QT_DIR OUTPUT_STRIP_TRAILING_WHITESPACE) + +set(CMAKE_PREFIX_PATH ${QT_DIR} ${CMAKE_PREFIX_PATH}) \ No newline at end of file diff --git a/internal/frontend/bridge-gui/bridge-gui-tester/CMakeLists.txt b/internal/frontend/bridge-gui/bridge-gui-tester/CMakeLists.txt index a22ba038..812dcbc9 100644 --- a/internal/frontend/bridge-gui/bridge-gui-tester/CMakeLists.txt +++ b/internal/frontend/bridge-gui/bridge-gui-tester/CMakeLists.txt @@ -43,13 +43,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) #***************************************************************************************************************************************************** # Qt #***************************************************************************************************************************************************** - - -if (NOT DEFINED ENV{QT6DIR}) - message(FATAL_ERROR "QT6DIR needs to be defined and point to the root of your Qt 6 folder (e.g. /Users/MyName/Qt/6.3.1/clang_64).") -endif() - -set(CMAKE_PREFIX_PATH $ENV{QT6DIR} ${CMAKE_PREFIX_PATH}) +include(../FindQt.cmake) find_package(Qt6 COMPONENTS Core Gui Widgets Qml REQUIRED) qt_standard_project_setup() message(STATUS "Using Qt ${Qt6_VERSION}") diff --git a/internal/frontend/bridge-gui/bridge-gui/CMakeLists.txt b/internal/frontend/bridge-gui/bridge-gui/CMakeLists.txt index 3ce35bd0..745e11c2 100644 --- a/internal/frontend/bridge-gui/bridge-gui/CMakeLists.txt +++ b/internal/frontend/bridge-gui/bridge-gui/CMakeLists.txt @@ -61,13 +61,7 @@ endif() #***************************************************************************************************************************************************** # Qt #***************************************************************************************************************************************************** - - -if (NOT DEFINED ENV{QT6DIR}) - message(FATAL_ERROR "QT6DIR needs to be defined and point to the root of your Qt 6 folder (e.g. /Users/MyName/Qt/6.3.1/clang_64).") -endif() - -set(CMAKE_PREFIX_PATH $ENV{QT6DIR} ${CMAKE_PREFIX_PATH}) +include(../FindQt.cmake) # Use CMAKE_INSTALL_PREFIX that is also used internally by CMake if (DEFINED ENV{BRIDGE_INSTALL_PATH}) diff --git a/internal/frontend/bridge-gui/bridge-gui/DeployDarwin.cmake b/internal/frontend/bridge-gui/bridge-gui/DeployDarwin.cmake index 0f2b7d1b..79f5d5f6 100644 --- a/internal/frontend/bridge-gui/bridge-gui/DeployDarwin.cmake +++ b/internal/frontend/bridge-gui/bridge-gui/DeployDarwin.cmake @@ -24,26 +24,26 @@ cmake_minimum_required(VERSION 3.22) install(SCRIPT ${deploy_script}) # QML -install(DIRECTORY "$ENV{QT6DIR}/qml/Qt" +install(DIRECTORY "${QT_DIR}/qml/Qt" DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/MacOS") -install(DIRECTORY "$ENV{QT6DIR}/qml/QtQml" +install(DIRECTORY "${QT_DIR}/qml/QtQml" DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/MacOS") -install(DIRECTORY "$ENV{QT6DIR}/qml/QtQuick" +install(DIRECTORY "${QT_DIR}/qml/QtQuick" DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/MacOS") # FRAMEWORKS -install(DIRECTORY "$ENV{QT6DIR}/lib/QtQmlWorkerScript.framework" +install(DIRECTORY "${QT_DIR}/lib/QtQmlWorkerScript.framework" DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/Frameworks") -install(DIRECTORY "$ENV{QT6DIR}/lib/QtQuickControls2Impl.framework" +install(DIRECTORY "${QT_DIR}/lib/QtQuickControls2Impl.framework" DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/Frameworks") -install(DIRECTORY "$ENV{QT6DIR}/lib/QtQuickLayouts.framework" +install(DIRECTORY "${QT_DIR}/lib/QtQuickLayouts.framework" DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/Frameworks") -install(DIRECTORY "$ENV{QT6DIR}/lib/QtQuickDialogs2.framework" +install(DIRECTORY "${QT_DIR}/lib/QtQuickDialogs2.framework" DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/Frameworks") -install(DIRECTORY "$ENV{QT6DIR}/lib/QtQuickDialogs2QuickImpl.framework" +install(DIRECTORY "${QT_DIR}/lib/QtQuickDialogs2QuickImpl.framework" DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/Frameworks") -install(DIRECTORY "$ENV{QT6DIR}/lib/QtQuickDialogs2Utils.framework" +install(DIRECTORY "${QT_DIR}/lib/QtQuickDialogs2Utils.framework" DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/Frameworks") # PLUGINS -install(FILES "$ENV{QT6DIR}/plugins/imageformats/libqsvg.dylib" +install(FILES "${QT_DIR}/plugins/imageformats/libqsvg.dylib" DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/PlugIns/imageformats") diff --git a/internal/frontend/bridge-gui/bridge-gui/DeployLinux.cmake b/internal/frontend/bridge-gui/bridge-gui/DeployLinux.cmake index cffb3650..10e1ea16 100644 --- a/internal/frontend/bridge-gui/bridge-gui/DeployLinux.cmake +++ b/internal/frontend/bridge-gui/bridge-gui/DeployLinux.cmake @@ -22,7 +22,7 @@ cmake_minimum_required(VERSION 3.22) #***************************************************************************************************************************************************** set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_BINDIR}" "${CMAKE_INSTALL_LIBDIR}" "." "../lib") -install(DIRECTORY "$ENV{QT6DIR}/qml" "$ENV{QT6DIR}/plugins" +install(DIRECTORY "${QT_DIR}/qml" "${QT_DIR}/plugins" DESTINATION "${CMAKE_INSTALL_PREFIX}") macro( AppendLib LIB_NAME HINT_PATH) @@ -40,7 +40,7 @@ macro( AppendLib LIB_NAME HINT_PATH) endmacro() macro( AppendQt6Lib LIB_NAME) - AppendLib("${LIB_NAME}" "$ENV{QT6DIR}/lib/") + AppendLib("${LIB_NAME}" "${QT_DIR}/lib/") endmacro() #Qt6 diff --git a/internal/frontend/bridge-gui/bridge-gui/DeployWindows.cmake b/internal/frontend/bridge-gui/bridge-gui/DeployWindows.cmake index 316d3988..3702d0df 100644 --- a/internal/frontend/bridge-gui/bridge-gui/DeployWindows.cmake +++ b/internal/frontend/bridge-gui/bridge-gui/DeployWindows.cmake @@ -39,9 +39,9 @@ macro( AppendVCPKGLib LIB_NAME) AppendLib("${LIB_NAME}" "${VCPKG_ROOT}/installed/x64-windows/bin") endmacro() -cmake_path(CONVERT $ENV{QT6DIR} TO_CMAKE_PATH_LIST QT6DIR) +cmake_path(CONVERT "${QT_DIR}/bin" TO_CMAKE_PATH_LIST QT_DIR_LIB) macro( AppendQt6Lib LIB_NAME) - AppendLib("${LIB_NAME}" "${QT6DIR}/bin") + AppendLib("${LIB_NAME}" "${QT_DIR_LIB}") endmacro() # Force plugins to be installed near the exe. @@ -67,9 +67,9 @@ AppendQt6Lib("Qt6QuickDialogs2Utils.dll") install(FILES ${DEPLOY_LIBS} DESTINATION "${CMAKE_INSTALL_PREFIX}") # QML PlugIns -install(DIRECTORY ${QT6DIR}/qml/Qt/labs/platform DESTINATION "${CMAKE_INSTALL_PREFIX}/Qt/labs/") -install(DIRECTORY ${QT6DIR}/qml/QtQml DESTINATION "${CMAKE_INSTALL_PREFIX}") -install(DIRECTORY ${QT6DIR}/qml/QtQuick DESTINATION "${CMAKE_INSTALL_PREFIX}") +install(DIRECTORY ${QT_DIR}/qml/Qt/labs/platform DESTINATION "${CMAKE_INSTALL_PREFIX}/Qt/labs/") +install(DIRECTORY ${QT_DIR}/qml/QtQml DESTINATION "${CMAKE_INSTALL_PREFIX}") +install(DIRECTORY ${QT_DIR}/qml/QtQuick DESTINATION "${CMAKE_INSTALL_PREFIX}") # Runtime system libs set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE) diff --git a/internal/frontend/bridge-gui/bridgepp/CMakeLists.txt b/internal/frontend/bridge-gui/bridgepp/CMakeLists.txt index 8edfc3c3..4bf30e0b 100644 --- a/internal/frontend/bridge-gui/bridgepp/CMakeLists.txt +++ b/internal/frontend/bridge-gui/bridgepp/CMakeLists.txt @@ -40,10 +40,7 @@ endif() #**************************************************************************************************************************************************** # Qt #**************************************************************************************************************************************************** -if (NOT DEFINED ENV{QT6DIR}) - message(FATAL_ERROR "QT6DIR needs to be defined and point to the root of your Qt 6 folder (e.g. /Users/MyName/Qt/6.3.1/clang_64).") -endif () -set(CMAKE_PREFIX_PATH $ENV{QT6DIR} ${CMAKE_PREFIX_PATH}) +include(../FindQt.cmake) find_package(Qt6 COMPONENTS Core REQUIRED) qt_standard_project_setup()