Sfoglia il codice sorgente

MinGW cross compile

Johannes Kreutz 3 anni fa
parent
commit
e40eab3b54

+ 2 - 2
trackpoint-app/CMakeLists.txt

@@ -21,8 +21,8 @@ SET(CMAKE_INCLUDE_CURRENT_DIR ON)
 ADD_COMPILE_DEFINITIONS(GL_SILENCE_DEPRECATION)
 
 # Qt
-#LIST(APPEND CMAKE_PREFIX_PATH "${CMAKE_CURRENT_LIST_DIR}/thirdparty/qt/install")
-FIND_PACKAGE(Qt6 COMPONENTS Core Gui Widgets OpenGLWidgets REQUIRED)
+LIST(APPEND CMAKE_PREFIX_PATH "${CMAKE_CURRENT_LIST_DIR}/thirdparty/qt/install")
+FIND_PACKAGE(Qt6 COMPONENTS Core Gui Widgets OpenGLWidgets REQUIRED NO_CMAKE_SYSTEM_PATH)
 
 # Json
 INCLUDE(thirdparty/json.cmake)

+ 11 - 5
trackpoint-app/build-dependencies-first.sh

@@ -1,11 +1,17 @@
 #!/bin/bash
 # Builds all dependencies which are no clean CMake projects, so using FetchContent is not possible.
 
-if [ $1 == "release" ]; then
-  OPTIONS="release"
-else
-  OPTIONS=""
-fi
+OPTIONS=""
+
+for var in "$@"
+do
+  if [ $var == "release" ]; then
+    OPTIONS+="release"
+  fi
+  if [ $var == "win-cross" ]; then
+    OPTIONS+="win-cross"
+  fi
+done
 
 thirdparty/qt.sh $OPTIONS
 

+ 13 - 6
trackpoint-app/thirdparty/qt.sh

@@ -3,11 +3,18 @@
 
 set -e
 
-if [ $1 == "release" ]; then
-  OPTIONS="-static "
-else
-  OPTIONS=""
-fi
+OPTIONS=""
+CMAKE_OPTIONS=""
+
+for var in "$@"
+do
+  if [ $var == "release" ]; then
+    OPTIONS+="-static "
+  fi
+  if [ $var == "win-cross" ]; then
+    CMAKE_OPTIONS+="-DCMAKE_TOOLCHAIN_FILE=../toolchain-mingw-w64.cmake"
+  fi
+done
 
 CORES=$(getconf _NPROCESSORS_ONLN)
 JOBS=$(($CORES-1))
@@ -63,7 +70,7 @@ pushd "qt-everywhere-src-$QT_MAJOR.$QT_MINOR.$QT_BUGFIX"
     -skip qtopcua -skip qtquick3d -skip qtquicktimeline -skip qttools \
     -skip qtactiveqt
 
-cmake --build . --parallel $JOBS
+cmake --build . --parallel $JOBS $CMAKE_OPTIONS
 cmake --install .
 
 popd

+ 17 - 0
trackpoint-app/toolchain-mingw-w64.cmake

@@ -0,0 +1,17 @@
+set(CMAKE_SYSTEM_NAME Windows)
+set(TOOLCHAIN_PREFIX x86_64-w64-mingw32)
+
+# cross compilers to use for C and C++
+set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)
+set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)
+
+# target environment on the build host system
+set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX} /usr/lib/gcc/${TOOLCHAIN_PREFIX})
+
+
+# modify default behavior of FIND_XXX() commands to
+# search for headers/libs in the target environment and
+# search for programs in the build host environment
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)