From dd03eebe75480fcac37d6e1920bbf1c25768584a Mon Sep 17 00:00:00 2001 From: Mathieu Pellerin Date: Tue, 4 Feb 2025 15:21:01 +0700 Subject: [PATCH] Add a linux triplet to (more) easily build QGIS against vcpkg (#60393) --- INSTALL.md | 35 +++++++++++++++++++ .../triplets/x64-linux-dynamic-release.cmake | 9 +++++ 2 files changed, 44 insertions(+) create mode 100644 vcpkg/triplets/x64-linux-dynamic-release.cmake diff --git a/INSTALL.md b/INSTALL.md index 3cd876bbf62..08a687695ec 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -23,6 +23,7 @@ Building QGIS from source - step by step + [3.11.2. Suggested system tweaks](#3112-suggested-system-tweaks) + [3.11.3. Additional tools for QGIS development](#3113-additional-tools-for-qgis-development) + [3.11.4. QT6 experimental builds with Fedora Rawhide](#3114-qt6-experimental-builds-with-fedora-rawhide) + * [3.12. Building on Linux with vcpkg](#312-building-on-linux-with-vcpkg) - [4. Building on Windows](#4-building-on-windows) * [4.1. Building with Microsoft Visual Studio](#41-building-with-microsoft-visual-studio) + [4.1.1. Visual Studio 2022 Community Edition](#411-visual-studio-2022-community-edition) @@ -581,6 +582,40 @@ To build, cmake .. -DBUILD_WITH_QT6=ON -DWITH_QTWEBKIT=OFF -DWITH_QTWEBENGINE=ON ``` +## 3.12. Building on Linux with vcpkg + +With [vcpkg](https://github.com/microsoft/vcpkg/) you can develop QGIS using +Qt6 on a Linux system. + +First, [Install and initialize vcpkg](https://github.com/microsoft/vcpkg-tool/blob/main/README.md#installuseremove). + +Get the QGIS source code: + +```sh +git clone git@github.com:qgis/QGIS.git +``` + +Configure: + +```sh +cmake -S . \ + -B ./build-x64-linux \ + -GNinja \ + -DCMAKE_BUILD_TYPE=Debug \ + -DWITH_VCPKG=ON \ + -DBUILD_WITH_QT6=ON \ + -DWITH_QTWEBKIT=OFF \ + -DWITH_BINDINGS=ON \ + -DVCPKG_TARGET_TRIPLET=x64-linux-dynamic-release \ + -DVCPKG_HOST_TRIPLET=x64-linux-dynamic-release +``` + +Build: + +```sh +cmake --build ./build-x64-linux +``` + # 4. Building on Windows ## 4.1. Building with Microsoft Visual Studio diff --git a/vcpkg/triplets/x64-linux-dynamic-release.cmake b/vcpkg/triplets/x64-linux-dynamic-release.cmake new file mode 100644 index 00000000000..a7490c2cdaf --- /dev/null +++ b/vcpkg/triplets/x64-linux-dynamic-release.cmake @@ -0,0 +1,9 @@ +set(VCPKG_TARGET_ARCHITECTURE x64) +set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_LIBRARY_LINKAGE dynamic) + +set(VCPKG_CMAKE_SYSTEM_NAME Linux) +set(VCPKG_BUILD_TYPE release) + +set(VCPKG_FIXUP_ELF_RPATH ON) +