Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prepare release 3.0 #177

Merged
merged 5 commits into from
Oct 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ Checks: >
-misc-include-cleaner,
-misc-no-recursion,
-misc-non-private-member-variables-in-classes,
-misc-use-internal-linkage,
-modernize-avoid-c-arrays,
-modernize-use-trailing-return-type,
-readability-convert-member-functions-to-static,
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/Android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ jobs:
- name: Set up OpenJDK 17
uses: actions/setup-java@v4
with:
distribution: adopt
distribution: temurin
java-version: 17

- name: Setup ninja
Expand Down
30 changes: 30 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,35 @@
# Changelog

## v3.0.0

### ✨ New features

- Completely reorganized the project structure into the `QMapLibre` namespace
and three libraries: `QMapLibre`, `QMapLibreLocation` and `QMapLibreWidgets`.
- Reference documentation now available at
https://maplibre.org/maplibre-native-qt/docs/.
- Built with Qt 6.5, 6.6 and 6.7 for all platforms and also Qt 5.15.2 for
macOS, Linux and Windows.
- QML configuration cleaned up, styles are now set with `maplibre.map.styles`.
- QML style parameters are also made available in C++.
Now imported using `import MapLibre 3.0`.
- QML plugins can be installed using a CMake helper function
`qmaplibre_location_setup_plugins`.
- Add ability to build as static libraries (#98).
- Add CMake presets for easier usage (#112).
- Support image coordinate change (#139).
- Add mouse events with coordinate to GLWidget (#141).
- Improve GeoJSON and image source handling (#164).

### 🐞 Bug fixes

- Improve handling of system ICU on Linux (#56).
- Allow to use as a CMake included project (#100).
- Make creation of Style with empty URL possible (#107).
- Set proper soversion (#117).
- Use less generic target names to allow usage as subproject (#127).
- Fix style filters setting (#163).

## v2.1.0

### ✨ New features
Expand Down
90 changes: 47 additions & 43 deletions docs/Building.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,55 @@ ninja
ninja install
```

See below for platform-specific instructions.
See [below](#platform-specific-build-instructions) for platform-specific instructions.

@note It is recommended to use [CMake workflows](#using-cmake-workflows) as they
are always up-to-date and cover all supported platforms.

## Using CMake workflows

CMake workflow presets are provided for all supported platforms.
Run the following command in the root directory to use a preset:

```shell
cmake --workflow --preset <preset>
```

for example

```shell
cmake --workflow --preset macOS-ccache
```

will run the macOS build with `ccache` enabled.

It is recommended to set `QT_ROOT_DIR` environment variable as the path
to the Qt installation to be used, mainly for mobile platforms to use
the correct Qt version.

For Android, the `ANDROID_ABI` environment variable should be set.

### Supported release workflows

| Platform | Qt6 | Qt6 with ccache | Qt5 | Qt5 with ccache |
|----------|-----------|------------------|------------------|-------------------------|
| Linux | `Linux` | `Linux-ccache` | `Linux-legacy` | `Linux-legacy-ccache` |
| macOS | `macOS` | `macOS-ccache` | `macOS-legacy` | `macOS-legacy-ccache` |
| Windows | `Windows` | `Windows-ccache` | `Windows-legacy` | `Windows-legacy-ccache` |
| iOS | `iOS` | `iOS-ccache` | | |
| Android | `Android` | `Android-ccache` | | |
| WASM | `WASM` | `WASM-ccache` | | |

### Special workflows

| Platform | Workflow | Description |
|----------|----------------------|---------------------------------------------------------------------|
| Linux | `Linux-coverage` | Linux build with Qt6, `ccache` and code coverage |
| Linux | `Linux-internal-icu` | Linux build with Qt6 and internal ICU library (also with `-ccache`) |
| macOS | `macOS-clang-tidy` | macOS build with Qt6, `ccache` and `clang-tidy` |

## Platform specific build instructions

### Linux

Release binaries are build with `-DCMAKE_BUILD_TYPE="Release"`.
Expand Down Expand Up @@ -92,6 +136,7 @@ cmake ../maplibre-native-qt -G "Ninja Multi-Config" \
-DCMAKE_CONFIGURATION_TYPES="Release;Debug" \
-DCMAKE_C_COMPILER_LAUNCHER="ccache" \
-DCMAKE_CXX_COMPILER_LAUNCHER="ccache" \
-DCMAKE_DEFAULT_CONFIGS="all" \
-DCMAKE_INSTALL_PREFIX="../install"
ninja
ninja install
Expand All @@ -112,6 +157,7 @@ cmake ../maplibre-native-qt -G "Ninja Multi-Config" \
-DCMAKE_CONFIGURATION_TYPES="Release;Debug" \
-DCMAKE_C_COMPILER_LAUNCHER="ccache" \
-DCMAKE_CXX_COMPILER_LAUNCHER="ccache" \
-DCMAKE_DEFAULT_CONFIGS="all" \
-DCMAKE_INSTALL_PREFIX="../install" \
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \
-DCMAKE_OSX_DEPLOYMENT_TARGET="14.0"
Expand Down Expand Up @@ -157,48 +203,6 @@ ninja
ninja install
```

## Using CMake workflows

CMake workflow presets are provided for all supported platforms.
They can be simply used by running in the root directory of the repository:

```shell
cmake --workflow --preset <preset>
```

for example

```shell
cmake --workflow --preset macOS-ccache
```

will run the macOS build with `ccache` enabled.

It is recommended to set `QT_ROOT_DIR` environment variable as the path
to the Qt installation to be used, mainly for mobile platforms to use
the correct Qt version.

For Android, `ANDROID_ABI` environment variable should be set.

### Supported release workflows

| Platform | Qt6 | Qt6 with ccache | Qt5 | Qt5 with ccache |
|----------|-----------|------------------|------------------|-------------------------|
| Linux | `Linux` | `Linux-ccache` | `Linux-legacy` | `Linux-legacy-ccache` |
| macOS | `macOS` | `macOS-ccache` | `macOS-legacy` | `macOS-legacy-ccache` |
| Windows | `Windows` | `Windows-ccache` | `Windows-legacy` | `Windows-legacy-ccache` |
| iOS | `iOS` | `iOS-ccache` | | |
| Android | `Android` | `Android-ccache` | | |
| WASM | `WASM` | `WASM-ccache` | | |

### Special workflows

| Platform | Workflow | Description |
|----------|----------------------|---------------------------------------------------------------------|
| Linux | `Linux-coverage` | Linux build with Qt6, `ccache` and code coverage |
| Linux | `Linux-internal-icu` | Linux build with Qt6 and internal ICU library (also with `-ccache`) |
| macOS | `macOS-clang-tidy` | macOS build with Qt6, `ccache` and `clang-tidy` |

<div class="section_buttons">

| Previous | Next |
Expand Down
3 changes: 3 additions & 0 deletions docs/Documentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ You would normally use this API in a Qt-based application.
If you are interested in the internals of MapLibre Native you can also look at
[Core C++ API](https://maplibre.org/maplibre-native/cpp/api/).

If not explicitly specified, all classes and functions are available
as of version 3.0 of the library.

The source code can be found [on GitHub](https://github.com/maplibre/maplibre-native-qt):

```shell
Expand Down
1 change: 1 addition & 0 deletions docs/Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -952,6 +952,7 @@ WARN_LOGFILE =
INPUT = \
../src/core \
../src/widgets \
../CHANGELOG.md \
location \
Documentation.md \
Building.md \
Expand Down
2 changes: 1 addition & 1 deletion test/widgets/gl_tester.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ void GLTester::initializeAnimation() {
int GLTester::selfTest() {
if (m_bearingAnimation) {
m_bearingAnimation->setDuration(kAnimationDuration);
m_bearingAnimation->setEndValue(map()->bearing() + 360 * 4);
m_bearingAnimation->setEndValue(map()->bearing() + (360 * 4));
m_bearingAnimation->start();
}

Expand Down
Loading