mirror of
https://github.com/nlohmann/json.git
synced 2026-10-03 21:20:30 +00:00
Package.swift declares the json target with path: "single_include/nlohmann", so SwiftPM consumers must write #include <json.hpp>; the <nlohmann/json.hpp> form used throughout the rest of this documentation does not resolve. The SwiftPM section of package_managers.md only had the summary box and did not mention this, nor the #4650 linker problem: because the json target ships only headers, SwiftPM/Xcode look for a json.o that is never built, so a consumer needs at least one .cpp file of its own. Add a usage example (docs/mkdocs/docs/integration/swift/) that depends on the json product, includes <json.hpp>, and works around the linker problem with its own example.cpp; verified it builds with `swift build` against a local checkout. Also raise the deployment target from the deprecated .watchOS(.v4) to .watchOS(.v9): Swift 6.4 warns "'v4' is deprecated: watchOS 9.0 is the oldest supported version" on every `swift package` invocation, and `swift package dump-package` is now clean. This is the one behavior change in this commit: it raises the minimum watchOS version the package declares. Add a macOS CI job that runs `swift package dump-package` (so a future deprecation warning fails CI) and builds the new documentation example against the checked-out repository with `swift build`, so a change to Package.swift or the example is caught before release. No workflow previously referenced Swift or Package.swift. Adding an in-repository placeholder .cpp to the library itself, so the issue does not occur for consumers at all, was proposed and declined in #4650; the documented workaround is a consumer-side .cpp file instead. #5716 item 3 Signed-off-by: Niels Lohmann <mail@nlohmann.me>
109 lines
3.4 KiB
YAML
109 lines
3.4 KiB
YAML
name: macOS
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- develop
|
|
- master
|
|
- release/*
|
|
pull_request:
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
macos-14:
|
|
runs-on: macos-14 # https://github.com/actions/runner-images/blob/main/images/macos/macos-14-Readme.md
|
|
strategy:
|
|
matrix:
|
|
xcode: ['15.0.1', '15.1', '15.2', '15.3', '15.4']
|
|
env:
|
|
DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer
|
|
|
|
steps:
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
persist-credentials: false
|
|
- name: Run CMake
|
|
run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On -DJSON_FastTests=ON
|
|
- name: Build
|
|
run: cmake --build build --parallel 10
|
|
- name: Test
|
|
run: cd build ; ctest -j 10 --output-on-failure
|
|
|
|
macos-15:
|
|
runs-on: macos-15 # https://github.com/actions/runner-images/blob/main/images/macos/macos-15-Readme.md
|
|
strategy:
|
|
matrix:
|
|
xcode: ['16.0', '16.1', '16.2', '16.3', '16.4', '26.0.1']
|
|
env:
|
|
DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer
|
|
|
|
steps:
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
persist-credentials: false
|
|
- name: Run CMake
|
|
run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On -DJSON_FastTests=ON
|
|
- name: Build
|
|
run: cmake --build build --parallel 10
|
|
- name: Test
|
|
run: cd build ; ctest -j 10 --output-on-failure
|
|
|
|
xcode_standards:
|
|
runs-on: macos-latest
|
|
strategy:
|
|
matrix:
|
|
standard: [11, 14, 17, 20, 23, 26]
|
|
|
|
steps:
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
persist-credentials: false
|
|
- name: Run CMake
|
|
run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On -DJSON_TestStandards=${{ matrix.standard }}
|
|
- name: Build
|
|
run: cmake --build build --parallel 10
|
|
- name: Test
|
|
run: cd build ; ctest -j 10 --output-on-failure
|
|
|
|
swiftpm:
|
|
runs-on: macos-15
|
|
steps:
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
persist-credentials: false
|
|
- name: Check that Package.swift resolves without a deprecation warning
|
|
run: swift package dump-package
|
|
- name: Build the SwiftPM documentation example against this checkout
|
|
run: |
|
|
mkdir -p /tmp/json-swiftpm-consumer/Sources/MyLibrary
|
|
cp docs/mkdocs/docs/integration/swift/example.cpp /tmp/json-swiftpm-consumer/Sources/MyLibrary/example.cpp
|
|
cat > /tmp/json-swiftpm-consumer/Package.swift << EOF
|
|
// swift-tools-version: 5.9
|
|
import PackageDescription
|
|
|
|
let package = Package(
|
|
name: "MyPackage",
|
|
dependencies: [
|
|
.package(path: "${{ github.workspace }}")
|
|
],
|
|
targets: [
|
|
.target(
|
|
name: "MyLibrary",
|
|
dependencies: [
|
|
.product(name: "json", package: "json")
|
|
],
|
|
publicHeadersPath: "."
|
|
)
|
|
]
|
|
)
|
|
EOF
|
|
cd /tmp/json-swiftpm-consumer
|
|
swift build
|