mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-16 00:03:12 -04:00
Fix MXE build
This commit is contained in:
parent
375afe5bea
commit
189dfc702b
@ -1,120 +1,30 @@
|
|||||||
|
Scripts to cross build a windows QGIS binary from Linux using MXE:
|
||||||
Scripts to cross build a windows QGIS binary from Linux using MXE:
|
|
||||||
(M cross environment) http://mxe.cc/
|
(M cross environment) http://mxe.cc/
|
||||||
|
|
||||||
For now, Python bindings cannot be built with mxe.
|
Limitations:
|
||||||
|
- No Python support
|
||||||
|
- No OpenCL
|
||||||
|
|
||||||
Follow the instructions on the website to prepare the mxe environment, you
|
Follow the instructions on the website to prepare the mxe environment, you
|
||||||
will need to build all required dependencies for QGIS.
|
will need to build all required dependencies for QGIS.
|
||||||
|
|
||||||
Note that some of the packages listed below are dependencies of other
|
The following command will select the posix threads enabled target and install
|
||||||
packages, you will probably not need to build them all explicitly.
|
the dependencies required by QGIS:
|
||||||
|
|
||||||
|
make MXE_TARGETS=i686-w64-mingw32.shared.posix -j 16 \
|
||||||
|
qca \
|
||||||
|
qtlocation \
|
||||||
|
qscintilla2 \
|
||||||
|
qwt \
|
||||||
|
gdal \
|
||||||
|
qtkeychain \
|
||||||
|
qtserialport \
|
||||||
|
qtwebkit \
|
||||||
|
qtwinextras \
|
||||||
|
libzip \
|
||||||
|
gsl \
|
||||||
|
libspatialindex
|
||||||
|
|
||||||
|
|
||||||
armadillo
|
When done, you can edit the build-mxe.sh script and set the MXE path to your
|
||||||
bfd
|
mxe installation directory.
|
||||||
bzip2
|
|
||||||
cairo
|
|
||||||
cmake
|
|
||||||
curl
|
|
||||||
dbus
|
|
||||||
dlfcn-win32
|
|
||||||
expat
|
|
||||||
fontconfig
|
|
||||||
freetds
|
|
||||||
freetype
|
|
||||||
freexl
|
|
||||||
gcc
|
|
||||||
gdal
|
|
||||||
gendef
|
|
||||||
geos
|
|
||||||
gettext
|
|
||||||
giflib
|
|
||||||
glib
|
|
||||||
gmp
|
|
||||||
gnutls
|
|
||||||
gsl
|
|
||||||
gta
|
|
||||||
harfbuzz
|
|
||||||
hdf4
|
|
||||||
hdf5
|
|
||||||
icu4c
|
|
||||||
isl
|
|
||||||
jasper
|
|
||||||
jpeg
|
|
||||||
json-c
|
|
||||||
lcms
|
|
||||||
libffi
|
|
||||||
libgcrypt
|
|
||||||
libgeotiff
|
|
||||||
libgnurx
|
|
||||||
libgpg_error
|
|
||||||
libiconv
|
|
||||||
libidn2
|
|
||||||
libmng
|
|
||||||
libmysqlclient
|
|
||||||
libpng
|
|
||||||
libspatialindex
|
|
||||||
libssh2
|
|
||||||
libunistring
|
|
||||||
libwebp
|
|
||||||
libxml2
|
|
||||||
libzip
|
|
||||||
lzo
|
|
||||||
mpc
|
|
||||||
mpfr
|
|
||||||
netcdf
|
|
||||||
nettle
|
|
||||||
openblas
|
|
||||||
openjpeg
|
|
||||||
openssl
|
|
||||||
pcre
|
|
||||||
pcre2
|
|
||||||
pixman
|
|
||||||
pkgconf
|
|
||||||
portablexdr
|
|
||||||
postgresql
|
|
||||||
proj
|
|
||||||
qca
|
|
||||||
qscintilla2
|
|
||||||
qt3d
|
|
||||||
qtactiveqt
|
|
||||||
qtbase
|
|
||||||
qtcanvas3d
|
|
||||||
qtcharts
|
|
||||||
qtconnectivity
|
|
||||||
qtdatavis3d
|
|
||||||
qtdeclarative
|
|
||||||
qtgamepad
|
|
||||||
qtgraphicaleffects
|
|
||||||
qtimageformats
|
|
||||||
qtkeychain
|
|
||||||
qtlocation
|
|
||||||
qtmultimedia
|
|
||||||
qtpurchasing
|
|
||||||
qtquickcontrols
|
|
||||||
qtquickcontrols2
|
|
||||||
qtscript
|
|
||||||
qtscxml
|
|
||||||
qtsensors
|
|
||||||
qtserialbus
|
|
||||||
qtserialport
|
|
||||||
qtspeech
|
|
||||||
qtsvg
|
|
||||||
qttools
|
|
||||||
qttranslations
|
|
||||||
qtvirtualkeyboard
|
|
||||||
qtwebchannel
|
|
||||||
qtwebkit
|
|
||||||
qtwebsockets
|
|
||||||
qtwebview
|
|
||||||
qtwinextras
|
|
||||||
qtxmlpatterns
|
|
||||||
qwt
|
|
||||||
spatialite
|
|
||||||
sqlite
|
|
||||||
tiff
|
|
||||||
xz
|
|
||||||
zlib
|
|
||||||
|
|
||||||
When done, you can edit the build-mxe.sh script to set the path to your mxe installation.
|
|
||||||
|
@ -41,8 +41,9 @@ RELEASE_DIR=$(pwd)/release-mxe
|
|||||||
|
|
||||||
# End configuration
|
# End configuration
|
||||||
|
|
||||||
|
# Original target (does not support posix threads)
|
||||||
|
# TARGET=${TARGET}
|
||||||
|
TARGET=i686-w64-mingw32.shared.posix
|
||||||
|
|
||||||
if [[ "$COMMAND" != *"package"* ]]; then
|
if [[ "$COMMAND" != *"package"* ]]; then
|
||||||
[ -d ${BUILD_DIR} ] && rm -rf ${BUILD_DIR}
|
[ -d ${BUILD_DIR} ] && rm -rf ${BUILD_DIR}
|
||||||
@ -54,6 +55,13 @@ if [[ "$COMMAND" != *"package"* ]]; then
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Patch for 5.11
|
||||||
|
echo '#include "qwebframe.h"' > ${MXE}/usr/${TARGET}/qt5/include/QtWebKitWidgets/QWebFrame
|
||||||
|
echo '#include "qwebview.h"' > ${MXE}/usr/${TARGET}/qt5/include/QtWebKitWidgets/QWebView
|
||||||
|
echo '#include "qwebpage.h"' > ${MXE}/usr/${TARGET}/qt5/include/QtWebKitWidgets/QWebPage
|
||||||
|
echo '#include "qwebelement.h"' > ${MXE}/usr/${TARGET}/qt5/include/QtWebKitWidgets/QWebElement
|
||||||
|
cp ${MXE}/usr/${TARGET}/include/windows.h ${MXE}/usr/${TARGET}/include/Windows.h
|
||||||
|
cp ${MXE}/usr/${TARGET}/include/shlobj.h ${MXE}/usr/${TARGET}/include/ShlObj.h
|
||||||
pushd .
|
pushd .
|
||||||
|
|
||||||
cd ${BUILD_DIR}
|
cd ${BUILD_DIR}
|
||||||
@ -62,7 +70,7 @@ cd ${BUILD_DIR}
|
|||||||
|
|
||||||
if [[ "$COMMAND" != *"package"* ]]; then
|
if [[ "$COMMAND" != *"package"* ]]; then
|
||||||
|
|
||||||
${MXE}/usr/bin/i686-w64-mingw32.shared-cmake .. \
|
${MXE}/usr/bin/${TARGET}-cmake .. \
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
|
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
|
||||||
-DCMAKE_INSTALL_PREFIX=${RELEASE_DIR} \
|
-DCMAKE_INSTALL_PREFIX=${RELEASE_DIR} \
|
||||||
-DENABLE_TESTS=OFF \
|
-DENABLE_TESTS=OFF \
|
||||||
@ -72,7 +80,7 @@ if [[ "$COMMAND" != *"package"* ]]; then
|
|||||||
-DWITH_ASTYLE=OFF \
|
-DWITH_ASTYLE=OFF \
|
||||||
-DWITH_SERVER=OFF \
|
-DWITH_SERVER=OFF \
|
||||||
-DWITH_BINDINGS=FALSE \
|
-DWITH_BINDINGS=FALSE \
|
||||||
-DQT_LRELEASE_EXECUTABLE=${MXE}/usr/i686-w64-mingw32.shared/qt5/bin/lrelease \
|
-DQT_LRELEASE_EXECUTABLE=${MXE}/usr/${TARGET}/qt5/bin/lrelease \
|
||||||
$ARGS
|
$ARGS
|
||||||
|
|
||||||
|
|
||||||
@ -82,12 +90,12 @@ fi
|
|||||||
|
|
||||||
# Collect deps
|
# Collect deps
|
||||||
|
|
||||||
$PYDEPLOY --build=${RELEASE_DIR} --objdump=${MXE}/usr/bin/i686-w64-mingw32.shared-objdump ${RELEASE_DIR}/qgis.exe
|
$PYDEPLOY --build=${RELEASE_DIR} --objdump=${MXE}/usr/bin/${TARGET}-objdump ${RELEASE_DIR}/qgis.exe
|
||||||
for dll in $(ls ${RELEASE_DIR}/*.dll); do \
|
for dll in $(ls ${RELEASE_DIR}/*.dll); do \
|
||||||
$PYDEPLOY --build=${RELEASE_DIR} --objdump=${MXE}/usr/bin/i686-w64-mingw32.shared-objdump $dll; \
|
$PYDEPLOY --build=${RELEASE_DIR} --objdump=${MXE}/usr/bin/${TARGET}-objdump $dll; \
|
||||||
done
|
done
|
||||||
|
|
||||||
cp -r ${MXE}/usr/i686-w64-mingw32.shared/qt5/plugins ${RELEASE_DIR}/qt5plugins
|
cp -r ${MXE}/usr/${TARGET}/qt5/plugins ${RELEASE_DIR}/qt5plugins
|
||||||
|
|
||||||
cat <<__TXT__ > ${RELEASE_DIR}/qt.conf
|
cat <<__TXT__ > ${RELEASE_DIR}/qt.conf
|
||||||
[Paths]
|
[Paths]
|
||||||
@ -99,7 +107,7 @@ __TXT__
|
|||||||
cd ${RELEASE_DIR}/..
|
cd ${RELEASE_DIR}/..
|
||||||
ZIP_NAME=mxe-release-$(date +%Y-%m-%d-%H-%I-%S).zip
|
ZIP_NAME=mxe-release-$(date +%Y-%m-%d-%H-%I-%S).zip
|
||||||
zip -r ${ZIP_NAME} $(basename ${RELEASE_DIR})
|
zip -r ${ZIP_NAME} $(basename ${RELEASE_DIR})
|
||||||
cp ${ZIP_NAME} ${DIR}
|
mv ${ZIP_NAME} ${DIR}
|
||||||
|
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
@ -26,7 +26,11 @@
|
|||||||
#ifdef Q_OS_MACX
|
#ifdef Q_OS_MACX
|
||||||
#include "qgsmacnative.h"
|
#include "qgsmacnative.h"
|
||||||
#elif defined (Q_OS_WIN)
|
#elif defined (Q_OS_WIN)
|
||||||
|
#ifndef __MINGW32__
|
||||||
#include "qgswinnative.h"
|
#include "qgswinnative.h"
|
||||||
|
#else
|
||||||
|
#include "qgsnative.h"
|
||||||
|
#endif
|
||||||
#elif defined (Q_OS_LINUX)
|
#elif defined (Q_OS_LINUX)
|
||||||
#include "qgslinuxnative.h"
|
#include "qgslinuxnative.h"
|
||||||
#else
|
#else
|
||||||
@ -130,7 +134,11 @@ QgsGui::QgsGui()
|
|||||||
macNative->setIconPath( QgsApplication::iconsPath() + QStringLiteral( "qgis-icon-macos.png" ) );
|
macNative->setIconPath( QgsApplication::iconsPath() + QStringLiteral( "qgis-icon-macos.png" ) );
|
||||||
mNative = macNative;
|
mNative = macNative;
|
||||||
#elif defined (Q_OS_WIN)
|
#elif defined (Q_OS_WIN)
|
||||||
|
#ifndef __MINGW32__
|
||||||
mNative = new QgsWinNative();
|
mNative = new QgsWinNative();
|
||||||
|
#else
|
||||||
|
mNative = new QgsNative();
|
||||||
|
#endif
|
||||||
#elif defined(Q_OS_LINUX)
|
#elif defined(Q_OS_LINUX)
|
||||||
mNative = new QgsLinuxNative();
|
mNative = new QgsLinuxNative();
|
||||||
#else
|
#else
|
||||||
|
@ -53,7 +53,7 @@ IF(APPLE)
|
|||||||
)
|
)
|
||||||
ENDIF(APPLE)
|
ENDIF(APPLE)
|
||||||
|
|
||||||
IF(WIN32)
|
IF(MSVC)
|
||||||
SET(QGIS_APP_WIN32_SRCS
|
SET(QGIS_APP_WIN32_SRCS
|
||||||
../../external/wintoast/src/wintoastlib.cpp
|
../../external/wintoast/src/wintoastlib.cpp
|
||||||
win/qgswinnative.cpp
|
win/qgswinnative.cpp
|
||||||
@ -65,7 +65,7 @@ IF(WIN32)
|
|||||||
SET(QGIS_NATIVE_SRCS ${QGIS_NATIVE_SRCS}
|
SET(QGIS_NATIVE_SRCS ${QGIS_NATIVE_SRCS}
|
||||||
${QGIS_APP_WIN32_SRCS}
|
${QGIS_APP_WIN32_SRCS}
|
||||||
)
|
)
|
||||||
ENDIF(WIN32)
|
ENDIF(MSVC)
|
||||||
|
|
||||||
IF(UNIX AND NOT APPLE AND NOT ANDROID)
|
IF(UNIX AND NOT APPLE AND NOT ANDROID)
|
||||||
SET(QGIS_APP_LINUX_SRCS
|
SET(QGIS_APP_LINUX_SRCS
|
||||||
@ -91,11 +91,11 @@ IF(APPLE)
|
|||||||
)
|
)
|
||||||
ENDIF(APPLE)
|
ENDIF(APPLE)
|
||||||
|
|
||||||
IF(WIN32)
|
IF(MSVC)
|
||||||
SET (QGIS_NATIVE_HDRS ${QGIS_NATIVE_HDRS}
|
SET (QGIS_NATIVE_HDRS ${QGIS_NATIVE_HDRS}
|
||||||
win/qgswinnative.h
|
win/qgswinnative.h
|
||||||
)
|
)
|
||||||
ENDIF(WIN32)
|
ENDIF(MSVC)
|
||||||
|
|
||||||
IF(UNIX)
|
IF(UNIX)
|
||||||
SET (QGIS_NATIVE_HDRS ${QGIS_NATIVE_HDRS}
|
SET (QGIS_NATIVE_HDRS ${QGIS_NATIVE_HDRS}
|
||||||
@ -108,11 +108,11 @@ INCLUDE_DIRECTORIES(
|
|||||||
${CMAKE_CURRENT_BINARY_DIR}
|
${CMAKE_CURRENT_BINARY_DIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
IF(WIN32)
|
IF(MSVC)
|
||||||
INCLUDE_DIRECTORIES(SYSTEM
|
INCLUDE_DIRECTORIES(SYSTEM
|
||||||
../../external/wintoast/src
|
../../external/wintoast/src
|
||||||
)
|
)
|
||||||
ENDIF(WIN32)
|
ENDIF(MSVC)
|
||||||
|
|
||||||
#############################################################
|
#############################################################
|
||||||
# qgis_native library
|
# qgis_native library
|
||||||
@ -168,13 +168,13 @@ IF (APPLE)
|
|||||||
TARGET_LINK_LIBRARIES(qgis_native Qt5::MacExtras)
|
TARGET_LINK_LIBRARIES(qgis_native Qt5::MacExtras)
|
||||||
ENDIF (APPLE)
|
ENDIF (APPLE)
|
||||||
|
|
||||||
IF (WIN32)
|
IF (MSVC)
|
||||||
FIND_PACKAGE(Qt5WinExtras)
|
FIND_PACKAGE(Qt5WinExtras)
|
||||||
|
|
||||||
TARGET_LINK_LIBRARIES(qgis_native shell32)
|
TARGET_LINK_LIBRARIES(qgis_native shell32)
|
||||||
TARGET_LINK_LIBRARIES(qgis_native ${Qt5Widget_LIBRARIES} ${QT_QTMAIN_LIBRARY})
|
TARGET_LINK_LIBRARIES(qgis_native ${Qt5Widget_LIBRARIES} ${QT_QTMAIN_LIBRARY})
|
||||||
TARGET_LINK_LIBRARIES(qgis_native Qt5::WinExtras)
|
TARGET_LINK_LIBRARIES(qgis_native Qt5::WinExtras)
|
||||||
ENDIF (WIN32)
|
ENDIF (MSVC)
|
||||||
# install
|
# install
|
||||||
|
|
||||||
INSTALL(TARGETS qgis_native
|
INSTALL(TARGETS qgis_native
|
||||||
|
Loading…
x
Reference in New Issue
Block a user