diff --git a/.appveyor.yml b/.appveyor.yml
index 3d29eddeef477cdde6a8f32474665b4495e47e73..5ff4fdb26b2dbbb4ec7d5e700e09fa131fc42727 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 416e26f31035f60931fe22a46c03c38772129628..11443b695e42ed2fd23b6b93ec4cd5f3bdbecbb3 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 a968e2d8eb0c643542df595f358fd421da3c761b..25bdc6f0ff5ce0eb279d3dc921c1e108c01893cb 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 e1b9b3609982b85f6834fdb45d96a4439e30f6ff..430fe34271fd8f5da807447a93c599e3ecfa8d8b 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 a98f16b6141330e2fd7f732dc0564cb62ea4a264..fb924291bbcc0f9bbfbe36003d28d24c28a1ab6b 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 a9272837a8b4358c3139649341b13e1a9944602d..c87c0e2967fd29d921f5029e291615f78e20a060 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
#-------------------------------------------------------------------------------------