From fd86b840e9a61f9d20d1968031ae5d2eef1d3f99 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Wed, 10 Jun 2020 18:39:06 -0700 Subject: [PATCH] Get XCode build working again --- .appveyor.yml | 12 ++++---- .travis.yml | 12 ++++---- Custom-Info.plist | 14 ++++------ QGCCommon.pri | 21 ++++---------- QGCSetup.pri | 69 +++++++++++++++++----------------------------- qgroundcontrol.pro | 13 ++------- 6 files changed, 49 insertions(+), 92 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 3d29eddee..5ff4fdb26 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -45,15 +45,15 @@ install: build_script: - mkdir %SHADOW_BUILD_DIR% && cd %SHADOW_BUILD_DIR% && %QT_QMAKE_DIR%\qmake -r CONFIG+=%CONFIG% %APPVEYOR_BUILD_FOLDER%\qgroundcontrol.pro - cd %SHADOW_BUILD_DIR% && %QT_JOM_DIR%\jom - - if "%CONFIG%" EQU "installer" ( copy %SHADOW_BUILD_DIR%\release\QGroundControl-installer.exe %APPVEYOR_BUILD_FOLDER%\QGroundControl-installer.exe ) + - if "%CONFIG%" EQU "installer" ( copy %SHADOW_BUILD_DIR%\qgc-app\QGroundControl-installer.exe %APPVEYOR_BUILD_FOLDER%\QGroundControl-installer.exe ) # Generate the source server information to embed in the PDB # Temporarily disabled while we try to figure out where this is located on appveyor image -# - '"C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\srcsrv\srctool.exe" -r -u "%SHADOW_BUILD_DIR%\release\qgroundcontrol.pdb" | grep qgroundcontrol | grep -v moc_ | grep -v libs\\mavlink | grep -v build_windows_install | python %APPVEYOR_BUILD_FOLDER%\deploy\genPDBsrcsrv.py > %SHADOW_BUILD_DIR%\release\qgroundcontrol.pdb.srcsrv' +# - '"C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\srcsrv\srctool.exe" -r -u "%SHADOW_BUILD_DIR%\qgc-app\qgroundcontrol.pdb" | grep qgroundcontrol | grep -v moc_ | grep -v libs\\mavlink | grep -v build_windows_install | python %APPVEYOR_BUILD_FOLDER%\deploy\genPDBsrcsrv.py > %SHADOW_BUILD_DIR%\qgc-app\qgroundcontrol.pdb.srcsrv' # write the source server info -# - '"C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\srcsrv\pdbstr.exe" -w -i:%SHADOW_BUILD_DIR%\release\qgroundcontrol.pdb.srcsrv -p:%SHADOW_BUILD_DIR%\release\qgroundcontrol.pdb -s:srcsrv' +# - '"C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\srcsrv\pdbstr.exe" -w -i:%SHADOW_BUILD_DIR%\qgc-app\qgroundcontrol.pdb.srcsrv -p:%SHADOW_BUILD_DIR%\qgc-app\qgroundcontrol.pdb -s:srcsrv' # build the symbol / PE store -# - 'cd %APPVEYOR_BUILD_FOLDER% && "C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\symstore.exe" add /compress /s symbols /f %SHADOW_BUILD_DIR%\release\qgroundcontrol.pdb /t qgroundcontrol' -# - 'cd %APPVEYOR_BUILD_FOLDER% && "C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\symstore.exe" add /compress /s symbols /f %SHADOW_BUILD_DIR%\release\qgroundcontrol.exe /t qgroundcontrol' +# - 'cd %APPVEYOR_BUILD_FOLDER% && "C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\symstore.exe" add /compress /s symbols /f %SHADOW_BUILD_DIR%\qgc-app\qgroundcontrol.pdb /t qgroundcontrol' +# - 'cd %APPVEYOR_BUILD_FOLDER% && "C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\symstore.exe" add /compress /s symbols /f %SHADOW_BUILD_DIR%\qgc-app\qgroundcontrol.exe /t qgroundcontrol' # - ps: 'cd $env:appveyor_build_folder; .\deploy\lowercaseify_symbolstore.ps1' test_script: @@ -62,7 +62,7 @@ test_script: artifacts: - path: QGroundControl-installer.exe name: qgcinstaller - - path: build_windows_install\release\qgroundcontrol.pdb + - path: build_windows_install\qgc-app\qgroundcontrol.pdb name: pdb deploy: diff --git a/.travis.yml b/.travis.yml index 416e26f31..11443b695 100644 --- a/.travis.yml +++ b/.travis.yml @@ -238,7 +238,7 @@ before_deploy: # create linux appimage - cd ${TRAVIS_BUILD_DIR} - if [[ "${SPEC}" = "linux-g++-64" && "${CONFIG}" = "installer" ]]; then - ./deploy/create_linux_appimage.sh ${TRAVIS_BUILD_DIR} ${SHADOW_BUILD_DIR}/release ${SHADOW_BUILD_DIR}/release/package; + ./deploy/create_linux_appimage.sh ${TRAVIS_BUILD_DIR} ${SHADOW_BUILD_DIR}/qgc-app ${SHADOW_BUILD_DIR}/qgc-app/package; fi deploy: @@ -249,7 +249,7 @@ deploy: secret_access_key: secure: BsLXeXUPsCJdX4tawrDnO8OFK5Hk4kzlDTiyH93En6TbjUargVAWDMcHVj7TUhr7+3Tao1W1zb0G4SJe9kHv+jrky0yE72KvoG3YAON0VXWKizxBAKkgHE2RxSTNAwDeKbi2G6YJfNDescBBfX7zEohShdXglQu7CGaUQKRaiI4= bucket: qgroundcontrol - local_dir: ${SHADOW_BUILD_DIR}/release/package + local_dir: ${SHADOW_BUILD_DIR}/qgc-app/package upload-dir: builds/${TRAVIS_BRANCH} acl: public_read region: us-west-2 @@ -265,7 +265,7 @@ deploy: secret_access_key: secure: BsLXeXUPsCJdX4tawrDnO8OFK5Hk4kzlDTiyH93En6TbjUargVAWDMcHVj7TUhr7+3Tao1W1zb0G4SJe9kHv+jrky0yE72KvoG3YAON0VXWKizxBAKkgHE2RxSTNAwDeKbi2G6YJfNDescBBfX7zEohShdXglQu7CGaUQKRaiI4= bucket: qgroundcontrol - local_dir: ${SHADOW_BUILD_DIR}/release/package + local_dir: ${SHADOW_BUILD_DIR}/qgc-app/package upload-dir: latest acl: public_read region: us-west-2 @@ -281,7 +281,7 @@ deploy: secret_access_key: secure: BsLXeXUPsCJdX4tawrDnO8OFK5Hk4kzlDTiyH93En6TbjUargVAWDMcHVj7TUhr7+3Tao1W1zb0G4SJe9kHv+jrky0yE72KvoG3YAON0VXWKizxBAKkgHE2RxSTNAwDeKbi2G6YJfNDescBBfX7zEohShdXglQu7CGaUQKRaiI4= bucket: qgroundcontrol - local_dir: ${SHADOW_BUILD_DIR}/release/package + local_dir: ${SHADOW_BUILD_DIR}/qgc-app/package upload-dir: ${TRAVIS_BRANCH} acl: public_read region: us-west-2 @@ -297,8 +297,8 @@ deploy: secure: K/Zqr/FCC7QvzFxYvBtCinPkacQq2ubJ2qm982+38Zf/KjibVOF1dEbVdrGZmII6Tg5DaQzNXGYkg5PvYmJgT9xRsqeQjeYIUYqYZpAt+HYWA38AVfMU8jip/1P1wmwqD469nzJOBBa8yfsMs6Ca7tBaNl/zTxCRGnAgEzqtkdQ= file_glob: true file: - - ${SHADOW_BUILD_DIR}/release/package/qgroundcontrol.* - - ${SHADOW_BUILD_DIR}/release/package/QGroundControl.* + - ${SHADOW_BUILD_DIR}/qgc-app/package/qgroundcontrol.* + - ${SHADOW_BUILD_DIR}/qgc-app/package/QGroundControl.* skip_cleanup: true on: tags: true diff --git a/Custom-Info.plist b/Custom-Info.plist index a968e2d8e..25bdc6f0f 100644 --- a/Custom-Info.plist +++ b/Custom-Info.plist @@ -9,18 +9,14 @@ CFBundlePackageType APPL CFBundleVersion - ### + ${QMAKE_FULL_VERSION} CFBundleShortVersionString - #.#.# - CFBundleSignature - ???? + ${QMAKE_FULL_VERSION} CFBundleExecutable - @EXECUTABLE@ + ${EXECUTABLE_NAME} CFBundleIdentifier - org.qgroundcontrol.qgroundcontrol - NOTE - Open source ground control app provided by QGroundControl dev team + ${PRODUCT_BUNDLE_IDENTIFIER} NSCameraUsageDescription - QGC uses UVC camera devices for FPV + Camera devices used for FPV diff --git a/QGCCommon.pri b/QGCCommon.pri index e1b9b3609..430fe3427 100644 --- a/QGCCommon.pri +++ b/QGCCommon.pri @@ -84,7 +84,6 @@ linux { DEFINES += QGC_GST_TAISYNC_ENABLED DEFINES += QGC_GST_MICROHARD_ENABLED DEFINES += QGC_ENABLE_MAVLINK_INSPECTOR - DEFINES += _CRT_NO_SECURE_WARNINGS QMAKE_CFLAGS -= -Zc:strictStrings QMAKE_CFLAGS_RELEASE -= -Zc:strictStrings QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO -= -Zc:strictStrings @@ -92,19 +91,11 @@ linux { QMAKE_CXXFLAGS_RELEASE -= -Zc:strictStrings QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO -= -Zc:strictStrings QMAKE_CXXFLAGS += /std:c++17 - QMAKE_CXXFLAGS_WARN_ON -= -w34100 # Qt insanity which prevents /wd on 4100 error from working correctly - QMAKE_CXXFLAGS += /W3 \ + QMAKE_CXXFLAGS_WARN_ON += /WX /W3 \ + /wd4005 \ # silence warnings about macro redefinition, these come from the shapefile code with is external /wd4290 \ # ignore exception specifications /wd4267 \ # silence conversion from 'size_t' to 'int', possible loss of data, these come from gps drivers shared with px4 /wd4100 # unreferenced formal parameter - gst-plugins-good - QMAKE_CFLAGS += /W3 \ - /wd4005 \ # shape file code - /wd4267 \ # shape file code - /wd4996 # shape file code - !WarningsAsErrorsOff { - QMAKE_CXXFLAGS += /WX - QMAKE_CFLAGS += /WX - } } else { error("Unsupported Windows toolchain, only Visual Studio 2017 64 bit is supported") } @@ -123,7 +114,7 @@ linux { QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6 } #-- Not forcing anything. Let qmake find the latest, installed SDK. - #QMAKE_MAC_SDK = macosx10.15 + QMAKE_MAC_SDK = macosx10.15 QMAKE_CXXFLAGS += -fvisibility=hidden QMAKE_CXXFLAGS_WARN_ON += -Werror \ -Wno-unused-parameter # gst-plugins-good @@ -253,10 +244,8 @@ LOCATION_PLUGIN_NAME = QGeoServiceProviderFactoryQGC DEFINES += _TTY_NOWARN_ MacBuild { - # Xcode 8.3 has issues on how MAVLink accesses (packed) message structure members. - # Note that this will fail when Xcode version reaches 10.x.x - XCODE_VERSION = $$system($$PWD/tools/get_xcode_version.sh) - greaterThan(XCODE_VERSION, 8.2.0): QMAKE_CXXFLAGS_WARN_ON += -Wno-address-of-packed-member + QMAKE_TARGET_BUNDLE_PREFIX = org.qgroundcontrol + QMAKE_BUNDLE = qgroundcontrol } # diff --git a/QGCSetup.pri b/QGCSetup.pri index a98f16b61..fb924291b 100644 --- a/QGCSetup.pri +++ b/QGCSetup.pri @@ -7,56 +7,37 @@ # ################################################################################ -QMAKE_POST_LINK += echo "Copying files" - -# -# Copy the application resources to the associated place alongside the application -# - -LinuxBuild { - DESTDIR_COPY_RESOURCE_LIST = $$DESTDIR -} - -MacBuild { - DESTDIR_COPY_RESOURCE_LIST = $$DESTDIR/$${TARGET}.app/Contents/MacOS -} - -# Windows version of QMAKE_COPY_DIR of course doesn't work the same as Mac/Linux. It will only -# copy the contents of the source directory. It doesn't create the top level source directory -# in the target. -WindowsBuild { - # Make sure to keep both side of this if using the same set of directories - DESTDIR_COPY_RESOURCE_LIST = $$replace(DESTDIR,"/","\\") - BASEDIR_COPY_RESOURCE_LIST = $$replace(BASEDIR,"/","\\") - QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY_DIR \"$$BASEDIR_COPY_RESOURCE_LIST\\resources\\flightgear\" \"$$DESTDIR_COPY_RESOURCE_LIST\\flightgear\" -} else { - !MobileBuild { - # Make sure to keep both sides of this if using the same set of directories - QMAKE_POST_LINK += && $$QMAKE_COPY_DIR $$BASEDIR/resources/flightgear $$DESTDIR_COPY_RESOURCE_LIST - } -} +QMAKE_POST_LINK += echo "QGC Post Link" # # Perform platform specific setup # MacBuild { - # Update version info in bundle - PLIST_FILE = $$DESTDIR/$${TARGET}.app/Contents/Info.plist - QMAKE_POST_LINK += && /usr/libexec/PlistBuddy -c \"Set :CFBundleShortVersionString $${MAC_VERSION}\" $$PLIST_FILE - QMAKE_POST_LINK += && /usr/libexec/PlistBuddy -c \"Set :CFBundleVersion $${MAC_BUILD}\" $$PLIST_FILE - QMAKE_POST_LINK += && /usr/libexec/PlistBuddy -c \"Set :CFBundleExecutable 'MacOs/$${TARGET}'\" $$PLIST_FILE -} - -MacBuild { - # Copy non-standard frameworks into app package - QMAKE_POST_LINK += && rsync -a --delete $$BASEDIR/libs/Frameworks $$DESTDIR/$${TARGET}.app/Contents/ - # SDL2 Framework - QMAKE_POST_LINK += && install_name_tool -change "@rpath/SDL2.framework/Versions/A/SDL2" "@executable_path/../Frameworks/SDL2.framework/Versions/A/SDL2" $$DESTDIR/$${TARGET}.app/Contents/MacOS/$${TARGET} - # AirMap - contains (DEFINES, QGC_AIRMAP_ENABLED) { - QMAKE_POST_LINK += && rsync -a $$BASEDIR/libs/airmapd/macOS/$$AIRMAP_QT_PATH/* $$DESTDIR/$${TARGET}.app/Contents/Frameworks/ - QMAKE_POST_LINK += && install_name_tool -change "@rpath/libairmap-qt.0.0.1.dylib" "@executable_path/../Frameworks/libairmap-qt.0.0.1.dylib" $$DESTDIR/$${TARGET}.app/Contents/MacOS/$${TARGET} + # The Post Link phase happens before a qmake built XCode Project does the "Project Copy" phase. + # This means the QGroundControl.app is not yet in the DESTDIR. It is still in XCode BUILT_PRODUCTS_DIR location. + # I could figure out a way to make it work without duplicating the code. This is because XCode puts these command + # into a shell script and Qt Creator put them into a makefile. + macx-xcode { + # Copy non-standard frameworks into app package + QMAKE_POST_LINK += && rsync -a --delete $$BASEDIR/libs/Frameworks $BUILT_PRODUCTS_DIR/$${TARGET}.app/Contents/ + # SDL2 Framework + QMAKE_POST_LINK += && install_name_tool -change "@rpath/SDL2.framework/Versions/A/SDL2" "@executable_path/../Frameworks/SDL2.framework/Versions/A/SDL2" $BUILT_PRODUCTS_DIR/$${TARGET}.app/Contents/MacOS/$${TARGET} + # AirMap + contains (DEFINES, QGC_AIRMAP_ENABLED) { + QMAKE_POST_LINK += && rsync -a $$BASEDIR/libs/airmapd/macOS/$$AIRMAP_QT_PATH/* $BUILT_PRODUCTS_DIR/$${TARGET}.app/Contents/Frameworks/ + QMAKE_POST_LINK += && install_name_tool -change "@rpath/libairmap-qt.0.0.1.dylib" "@executable_path/../Frameworks/libairmap-qt.0.0.1.dylib" $BUILT_PRODUCTS_DIR/$${TARGET}.app/Contents/MacOS/$${TARGET} + } + } else { + # Copy non-standard frameworks into app package + QMAKE_POST_LINK += && rsync -a --delete $$BASEDIR/libs/Frameworks $$DESTDIR/$${TARGET}.app/Contents/ + # SDL2 Framework + QMAKE_POST_LINK += && install_name_tool -change "@rpath/SDL2.framework/Versions/A/SDL2" "@executable_path/../Frameworks/SDL2.framework/Versions/A/SDL2" $$DESTDIR/$${TARGET}.app/Contents/MacOS/$${TARGET} + # AirMap + contains (DEFINES, QGC_AIRMAP_ENABLED) { + QMAKE_POST_LINK += && rsync -a $$BASEDIR/libs/airmapd/macOS/$$AIRMAP_QT_PATH/* $$DESTDIR/$${TARGET}.app/Contents/Frameworks/ + QMAKE_POST_LINK += && install_name_tool -change "@rpath/libairmap-qt.0.0.1.dylib" "@executable_path/../Frameworks/libairmap-qt.0.0.1.dylib" $$DESTDIR/$${TARGET}.app/Contents/MacOS/$${TARGET} + } } } diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro index a9272837a..c87c0e296 100644 --- a/qgroundcontrol.pro +++ b/qgroundcontrol.pro @@ -28,12 +28,7 @@ include(QGCCommon.pri) TARGET = QGroundControl TEMPLATE = app QGCROOT = $$PWD - -DebugBuild { - DESTDIR = $${OUT_PWD}/debug -} else { - DESTDIR = $${OUT_PWD}/release -} +DESTDIR = qgc-app QML_IMPORT_PATH += $$PWD/src/QmlControls @@ -509,7 +504,6 @@ DebugBuild { PX4FirmwarePlugin { PX4FirmwarePluginFactory { APMFirmwarePlugin { #src/AnalyzeView/LogDownloadTest.h \ #src/qgcunittest/FileDialogTest.h \ #src/qgcunittest/FileManagerTest.h \ - #src/qgcunittest/FlightGearTest.h \ #src/qgcunittest/MainWindowTest.h \ #src/qgcunittest/MessageBoxTest.h \ @@ -553,7 +547,6 @@ DebugBuild { PX4FirmwarePlugin { PX4FirmwarePluginFactory { APMFirmwarePlugin { #src/AnalyzeView/LogDownloadTest.cc \ #src/qgcunittest/FileDialogTest.cc \ #src/qgcunittest/FileManagerTest.cc \ - #src/qgcunittest/FlightGearTest.cc \ #src/qgcunittest/MainWindowTest.cc \ #src/qgcunittest/MessageBoxTest.cc \ @@ -1381,9 +1374,7 @@ AndroidBuild { # Localization # -TRANSLATIONS += \ - $$files($$PWD/translations/qgc_source_*.ts) \ - $$files($$PWD/translations/qgc_json_*.ts) +TRANSLATIONS += $$files($$PWD/localization/qgc_*.ts) CONFIG+=lrelease embed_translations #------------------------------------------------------------------------------------- -- 2.22.0