Merge remote-tracking branch 'origin/multiple-views' into multiple-views-one-reference-count
This commit is contained in:
commit
74b919d410
|
|
@ -1,5 +1,10 @@
|
|||
name: cesium-native
|
||||
on: [push, pull_request]
|
||||
env:
|
||||
VCPKG_BINARY_SOURCES: 'clear;x-aws,s3://cesium-builds/vcpkg/cesium-native-cache/,readwrite'
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_INTERNAL_SERVICES_VCPKG_ACCESS_KEY }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_INTERNAL_SERVICES_VCPKG_SECRET_KEY }}
|
||||
AWS_REGION: us-east-1
|
||||
jobs:
|
||||
QuickChecks:
|
||||
name: "Quick Checks"
|
||||
|
|
@ -31,18 +36,11 @@ jobs:
|
|||
chmod +x llvm.sh
|
||||
sudo ./llvm.sh 19
|
||||
sudo apt-get install clang-tidy-19
|
||||
- name: Cache vcpkg artifacts
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.ezvcpkg
|
||||
key: vcpkg-ubuntu-24.04-clang-${{ hashFiles('CMakeLists.txt') }}
|
||||
restore-keys: |
|
||||
vcpkg-ubuntu-24.04-clang-${{ hashFiles('CMakeLists.txt') }}
|
||||
vcpkg-ubuntu-24.04-clang
|
||||
- name: Set CC and CXX
|
||||
run: |
|
||||
echo "CC=/usr/bin/clang-19" >> "$GITHUB_ENV"
|
||||
echo "CXX=/usr/bin/clang++-19" >> "$GITHUB_ENV"
|
||||
echo "VCPKG_ROOT=${VCPKG_INSTALLATION_ROOT}" >> "$GITHUB_ENV"
|
||||
- name: Make more swap space available
|
||||
run: |
|
||||
sudo swapoff -a
|
||||
|
|
@ -54,8 +52,14 @@ jobs:
|
|||
- name: Run clang-tidy
|
||||
run: |
|
||||
echo `$CC --version | head -n 1`, `cmake --version | head -n 1`
|
||||
cmake -B build -S . -DCMAKE_BUILD_TYPE=Debug -DCESIUM_CLANG_TIDY_USE_THREADS=4
|
||||
cp doc/cmake-presets/CMakeUserPresets.json .
|
||||
cmake --preset=vcpkg-linux -DCMAKE_BUILD_TYPE=Debug -DCESIUM_CLANG_TIDY_USE_THREADS=4
|
||||
cmake --build build --target clang-tidy > output.log
|
||||
- name: Print vcpkg problems
|
||||
if: ${{ failure() }}
|
||||
run: |
|
||||
cat "/usr/local/share/vcpkg/buildtrees/doctest/config-x64-linux-dbg-out.log"
|
||||
cat "/usr/local/share/vcpkg/buildtrees/doctest/config-x64-linux-dbg-err.log"
|
||||
- name: List clang-tidy warnings & errors
|
||||
if: ${{ !cancelled() }}
|
||||
run: |
|
||||
|
|
@ -75,6 +79,7 @@ jobs:
|
|||
tar xzf doxygen-1.13.2.linux.bin.tar.gz
|
||||
export PATH=$PWD/doxygen-1.13.2/bin:$PATH
|
||||
echo "PATH=$PATH" >> "$GITHUB_ENV"
|
||||
echo "VCPKG_ROOT=${VCPKG_INSTALLATION_ROOT}" >> "$GITHUB_ENV"
|
||||
doxygen --version
|
||||
- name: Install latest CMake 3 and Ninja
|
||||
uses: lukka/get-cmake@latest
|
||||
|
|
@ -88,18 +93,11 @@ jobs:
|
|||
uses: hendrikmuhs/ccache-action@v1.2.9
|
||||
with:
|
||||
key: ccache-ubuntu-22.04-doxygen
|
||||
- name: Cache vcpkg artifacts
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.ezvcpkg
|
||||
key: vcpkg-ubuntu-22.04-doxygen-${{ hashFiles('CMakeLists.txt') }}
|
||||
restore-keys: |
|
||||
vcpkg-ubuntu-22.04-doxygen-${{ hashFiles('CMakeLists.txt') }}
|
||||
vcpkg-ubuntu-22.04-doxygen
|
||||
- name: Generate Documentation
|
||||
run: |
|
||||
npm install
|
||||
cmake -B build -S .
|
||||
cp doc/cmake-presets/CMakeUserPresets.json .
|
||||
cmake --preset=vcpkg-linux
|
||||
cmake --build build --target cesium-native-docs
|
||||
- name: Publish Documentation Artifact
|
||||
if: ${{ success() }}
|
||||
|
|
@ -135,14 +133,11 @@ jobs:
|
|||
with:
|
||||
key: ccache-${{ env.CACHE_KEY}}-${{matrix.build_type}}-1
|
||||
variant: sccache
|
||||
- name: Cache vcpkg artifacts
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: /.ezvcpkg
|
||||
key: vcpkg-${{ env.CACHE_KEY }}-${{ hashFiles('CMakeLists.txt') }}-1
|
||||
- name: Compile ${{matrix.build_type}} Configuration
|
||||
run: |
|
||||
cmake -B build -S . -G Ninja -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_C_COMPILER_LAUNCHER=C:\\Users\\runneradmin\\.cargo\\bin\\sccache -DCMAKE_CXX_COMPILER_LAUNCHER=C:\\Users\\runneradmin\\.cargo\\bin\\sccache
|
||||
$env:VCPKG_ROOT="$env:VCPKG_INSTALLATION_ROOT"
|
||||
Copy .\doc\cmake-presets\CMakeUserPresets.json .\
|
||||
cmake --preset=vcpkg-windows -G Ninja -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_C_COMPILER_LAUNCHER=C:\\Users\\runneradmin\\.cargo\\bin\\sccache -DCMAKE_CXX_COMPILER_LAUNCHER=C:\\Users\\runneradmin\\.cargo\\bin\\sccache
|
||||
cmake --build build
|
||||
- name: Test ${{matrix.build_type}} Configuration
|
||||
run: |
|
||||
|
|
@ -181,19 +176,14 @@ jobs:
|
|||
uses: hendrikmuhs/ccache-action@v1.2.9
|
||||
with:
|
||||
key: ccache-${{ env.CACHE_KEY}}-${{matrix.build_type}}
|
||||
- name: Cache vcpkg artifacts
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.ezvcpkg
|
||||
key: vcpkg-${{ env.CACHE_KEY }}-${{ hashFiles('CMakeLists.txt') }}
|
||||
restore-keys: |
|
||||
vcpkg-${{ env.CACHE_KEY }}-${{ hashFiles('CMakeLists.txt') }}
|
||||
vcpkg-${{ env.CACHE_KEY }}
|
||||
- name: Set CC and CXX
|
||||
if: ${{ matrix.compiler == 'clang' && matrix.platform != 'macos-13'}}
|
||||
run: |
|
||||
echo "CC=clang" >> "$GITHUB_ENV"
|
||||
echo "CXX=clang++" >> "$GITHUB_ENV"
|
||||
- name: add VCPKG_ROOT
|
||||
run: |
|
||||
echo "VCPKG_ROOT=${VCPKG_INSTALLATION_ROOT}" >> "$GITHUB_ENV"
|
||||
- name: Make more swap space available
|
||||
if: ${{ matrix.platform != 'macos-13'}}
|
||||
run: |
|
||||
|
|
@ -217,10 +207,11 @@ jobs:
|
|||
set(VCPKG_OSX_ARCHITECTURES x86_64)
|
||||
" > vcpkg/triplets/x64-macos-10-15.cmake
|
||||
# Specify the overlay triplet, and also tell cesium-native to build with the same settings.
|
||||
echo "EXTRA_CMAKE_OPTIONS=-DVCPKG_OVERLAY_TRIPLETS=$PWD/vcpkg/triplets -DVCPKG_TRIPLET=x64-macos-10-15 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_SYSTEM_NAME=Darwin -DCMAKE_SYSTEM_PROCESSOR=x86_64" >> "$GITHUB_ENV"
|
||||
echo "EXTRA_CMAKE_OPTIONS=-DVCPKG_OVERLAY_TRIPLETS=$PWD/vcpkg/triplets -DVCPKG_TRIPLET=x64-macos-10-15 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_SYSTEM_NAME=Darwin -DCMAKE_SYSTEM_PROCESSOR=x86_64 -DVCPKG_TARGET_TRIPLET=x64-macos-10-15" >> "$GITHUB_ENV"
|
||||
- name: Compile ${{matrix.build_type}} Configuration
|
||||
run: |
|
||||
cmake -B build -S . -DCMAKE_BUILD_TYPE:STRING=${{matrix.build_type}} $EXTRA_CMAKE_OPTIONS
|
||||
cp doc/cmake-presets/CMakeUserPresets.json .
|
||||
cmake --preset=vcpkg -DCMAKE_BUILD_TYPE:STRING=${{matrix.build_type}} $EXTRA_CMAKE_OPTIONS
|
||||
cmake --build build --parallel
|
||||
- name: Test ${{matrix.build_type}} Configuration
|
||||
run: |
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@
|
|||
|
||||
##### Additions :tada:
|
||||
|
||||
- Added `convertAccessorTypeToPropertyType` and `convertPropertyTypeToAccessorType` to `CesiumGltf::PropertyType`.
|
||||
- Added support for building in `vcpkg` manifest mode.
|
||||
- Added `TilesetViewGroup`. View groups select tiles independently from other any other view group. This is useful for applications with multiple viewports to allow them to show different levels-of-detail for the same area.
|
||||
- Added `CreditReferencer` which makes it easy to track credits in a frame-oriented fashion similar to how `CreditSystem::addCreditToFrame` worked in previous releases.
|
||||
- Added a `std::hash` implementation for `IntrusivePointer` that simply hashes the underlying pointer.
|
||||
|
|
|
|||
|
|
@ -4,12 +4,43 @@ if (NOT VCPKG_LIBRARY_LINKAGE)
|
|||
set(VCPKG_LIBRARY_LINKAGE static)
|
||||
endif()
|
||||
|
||||
if(NOT VCPKG_MANIFEST_MODE)
|
||||
# By default, Use ezvcpkg to install dependencies. But don't use
|
||||
# ezvcpkg if it appears that this configuration is using vcpkg
|
||||
# manifest mode already, either by building cesium-native directly,
|
||||
# or via a higher level project that has added cesium-native as a
|
||||
# subdirectory and is using vcpkg to statisfy its dependencies.
|
||||
|
||||
#In a fresh build, before CMakeCache.txt exists, determine whether to
|
||||
#use ezvcpkg. After this, CESIUM_USE_EZVCPG will be in the cache.
|
||||
set(CESIUM_USE_EZVCPKG_DEFAULT ON)
|
||||
if (VCPKG_MANIFEST_MODE)
|
||||
set(CESIUM_USE_EZVCPKG_DEFAULT OFF)
|
||||
elseif (CMAKE_TOOLCHAIN_FILE)
|
||||
get_filename_component(toolchainFile "${CMAKE_TOOLCHAIN_FILE}" NAME)
|
||||
if(toolchainFile STREQUAL "vcpkg.cmake")
|
||||
set(CESIUM_USE_EZVCPKG_DEFAULT OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
option(CESIUM_USE_EZVCPKG "use ezvcpkg helper" ${CESIUM_USE_EZVCPKG_DEFAULT})
|
||||
|
||||
if(CESIUM_USE_EZVCPKG)
|
||||
# Keep vcpkg from running in manifset mode. It will try to because
|
||||
# this directory contains a vcpkg.json manifest.
|
||||
set(VCPKG_MANIFEST_MODE OFF CACHE BOOL "vcpkg manifest mode should not be enabled with ezvcpg!")
|
||||
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/ezvcpkg/ezvcpkg.cmake)
|
||||
endif()
|
||||
|
||||
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/detect-vcpkg-triplet.cmake)
|
||||
|
||||
# Note: VCPKG_TRIPLET is not used by vcpkg! The relevant variables are
|
||||
# VCPKG_TARGET_TRIPLET and VCPKG_HOST_TRIPLET. ezvcpkg and our custom
|
||||
# installation code use VCPKG_TRIPLET, so initialize it here.
|
||||
|
||||
if (VCPKG_TARGET_TRIPLET)
|
||||
set(VCPKG_TRIPLET "${VCPKG_TARGET_TRIPLET}")
|
||||
endif()
|
||||
|
||||
if (NOT VCPKG_TRIPLET)
|
||||
if (DEFINED ENV{VCPKG_TRIPLET})
|
||||
set(VCPKG_TRIPLET "$ENV{VCPKG_TRIPLET}")
|
||||
|
|
@ -21,9 +52,13 @@ if (NOT VCPKG_TRIPLET)
|
|||
else()
|
||||
set(VCPKG_TRIPLET "${DETECTED_VCPKG_TRIPLET}")
|
||||
endif()
|
||||
if (NOT CESIUM_USE_EZVCPKG)
|
||||
set(VCPKG_TARGET_TRIPLET "${VCPKG_TRIPLET}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
message(STATUS "VCPKG_TRIPLET ${VCPKG_TRIPLET}")
|
||||
message(STATUS "VCPKG_TARGET_TRIPLET ${VCPKG_TARGET_TRIPLET}")
|
||||
|
||||
if (NOT VCPKG_OVERLAY_PORTS)
|
||||
if (DEFINED ENV{VCPKG_OVERLAY_PORTS})
|
||||
|
|
@ -60,7 +95,7 @@ set(PACKAGES_PRIVATE
|
|||
# Packages only used for testing
|
||||
set(PACKAGES_TEST doctest)
|
||||
|
||||
if(NOT VCPKG_MANIFEST_MODE)
|
||||
if(CESIUM_USE_EZVCPKG)
|
||||
set(PACKAGES_ALL ${PACKAGES_PUBLIC})
|
||||
list(APPEND PACKAGES_ALL ${PACKAGES_PRIVATE})
|
||||
list(APPEND PACKAGES_ALL ${PACKAGES_TEST})
|
||||
|
|
@ -97,7 +132,7 @@ include(CMakeDependentOption)
|
|||
set(PACKAGE_BASE_DIR "${EZVCPKG_PACKAGES_DIR}")
|
||||
set(PACKAGE_BUILD_DIR "${EZVCPKG_DIR}")
|
||||
|
||||
if(VCPKG_MANIFEST_MODE)
|
||||
if(NOT EZVCPKG_PACKAGES_DIR)
|
||||
set(PACKAGE_BUILD_DIR "${VCPKG_INSTALLED_DIR}/${VCPKG_TRIPLET}/")
|
||||
set(PACKAGE_BASE_DIR "$ENV{VCPKG_ROOT}/packages")
|
||||
endif()
|
||||
|
|
@ -120,7 +155,7 @@ cmake_dependent_option(
|
|||
|
||||
set(CESIUM_CLANG_TIDY_USE_THREADS 14 CACHE STRING "Sets the number of threads for run-clang-tidy to use.")
|
||||
|
||||
if(CESIUM_INSTALL_STATIC_LIBS OR CESIUM_INSTALL_HEADERS)
|
||||
if(CESIUM_INSTALL_STATIC_LIBS OR CESIUM_INSTALL_HEADERS AND EZVCPKG_PACKAGES_DIR)
|
||||
foreach(PACKAGE ${PACKAGES_PUBLIC})
|
||||
string(REGEX REPLACE "\[.*\]" "" PACKAGE ${PACKAGE})
|
||||
set(PACKAGE_DIR ${PACKAGE_BASE_DIR}/${PACKAGE}_${VCPKG_TRIPLET})
|
||||
|
|
@ -142,7 +177,7 @@ if(CESIUM_INSTALL_STATIC_LIBS OR CESIUM_INSTALL_HEADERS)
|
|||
endforeach()
|
||||
endif()
|
||||
|
||||
if(CESIUM_INSTALL_STATIC_LIBS)
|
||||
if(CESIUM_INSTALL_STATIC_LIBS AND NOT VCPKG_MANIFEST_MODE)
|
||||
foreach(PACKAGE ${PACKAGES_PRIVATE})
|
||||
set(PACKAGE_DIR ${PACKAGE_BASE_DIR}/${PACKAGE}_${VCPKG_TRIPLET})
|
||||
message(DEBUG "PACKAGE_DIR ${PACKAGE_DIR}")
|
||||
|
|
@ -211,6 +246,7 @@ if(CESIUM_ENABLE_CLANG_TIDY)
|
|||
endif()
|
||||
|
||||
# Add Modules
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/modules")
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/extern/cmake-modules/")
|
||||
if (CESIUM_COVERAGE_ENABLED AND NOT MSVC)
|
||||
include(CodeCoverage)
|
||||
|
|
@ -244,6 +280,14 @@ list(APPEND CMAKE_PREFIX_PATH "${PACKAGE_BUILD_DIR}")
|
|||
# However, for some of the vcpkg built libraries where they don't provide a prope cmake config file, we have to declare
|
||||
# and imporeted library target ourselves. This is the case for modp_b64::modp_b64, picosha2::picosha2 and earcut. In
|
||||
# these cases, we *do* have the somewhat ugly and verbose details in the extern/CMakeLists.txt file.
|
||||
#
|
||||
# XXX Above comment should be obsoleted by these first calls to
|
||||
# find_package, which resolve to our own modules that provide
|
||||
# targets. If needed, they can be installed with CMake config files
|
||||
# etc.
|
||||
find_package(zlib-ng REQUIRED)
|
||||
find_package(modp_b64 REQUIRED)
|
||||
|
||||
find_package(Async++ CONFIG REQUIRED)
|
||||
find_package(doctest CONFIG REQUIRED)
|
||||
find_package(draco CONFIG REQUIRED)
|
||||
|
|
@ -298,3 +342,21 @@ endif()
|
|||
|
||||
|
||||
add_subdirectory(doc)
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
||||
install(EXPORT CesiumExports
|
||||
FILE cesium-nativeTargets.cmake
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/cesium-native/cmake)
|
||||
|
||||
install(FILES
|
||||
"${CMAKE_CURRENT_LIST_DIR}/cmake/modules/Findzlib-ng.cmake"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/cmake/modules/Findmodp_b64.cmake"
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/cesium-native/cmake)
|
||||
|
||||
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/config/Config.cmake.in
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/cesium-nativeConfig.cmake"
|
||||
INSTALL_DESTINATION ${CMAKE_INSTALL_DATADIR}/cesium-native/cmake)
|
||||
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/cesium-nativeConfig.cmake
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/cesium-native/cmake)
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@ target_sources(
|
|||
PRIVATE
|
||||
${CESIUM_3DTILES_SOURCES}
|
||||
${CESIUM_3DTILES_HEADERS}
|
||||
PUBLIC
|
||||
${CESIUM_3DTILES_PUBLIC_HEADERS}
|
||||
)
|
||||
|
||||
|
|
@ -44,8 +43,9 @@ cesium_target_include_directories(
|
|||
TARGET
|
||||
Cesium3DTiles
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_LIST_DIR}/include
|
||||
${CMAKE_CURRENT_LIST_DIR}/generated/include
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/generated/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_LIST_DIR}/src
|
||||
${CMAKE_CURRENT_LIST_DIR}/generated/src
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@ target_sources(
|
|||
PRIVATE
|
||||
${CESIUM_3DTILES_CONTENT_SOURCES}
|
||||
${CESIUM_3DTILES_CONTENT_HEADERS}
|
||||
PUBLIC
|
||||
${CESIUM_3DTILES_CONTENT_PUBLIC_HEADERS}
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@ target_sources(
|
|||
PRIVATE
|
||||
${CESIUM_3DTILES_READER_SOURCES}
|
||||
${CESIUM_3DTILES_READER_HEADERS}
|
||||
PUBLIC
|
||||
${CESIUM_3DTILES_READER_PUBLIC_HEADERS}
|
||||
)
|
||||
|
||||
|
|
@ -45,8 +44,9 @@ cesium_target_include_directories(
|
|||
TARGET
|
||||
Cesium3DTilesReader
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_LIST_DIR}/include
|
||||
${CMAKE_CURRENT_LIST_DIR}/generated/include
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/generated/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_LIST_DIR}/src
|
||||
${CMAKE_CURRENT_LIST_DIR}/generated/src
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ target_sources(
|
|||
PRIVATE
|
||||
${CESIUM_3DTILES_SELECTION_SOURCES}
|
||||
${CESIUM_3DTILES_SELECTION_HEADERS}
|
||||
PUBLIC
|
||||
${CESIUM_3DTILES_SELECTION_PUBLIC_HEADERS}
|
||||
)
|
||||
|
||||
|
|
@ -33,8 +32,9 @@ cesium_target_include_directories(
|
|||
TARGET
|
||||
Cesium3DTilesSelection
|
||||
PUBLIC
|
||||
${CMAKE_BINARY_DIR}
|
||||
${CMAKE_CURRENT_LIST_DIR}/include
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_LIST_DIR}/src
|
||||
)
|
||||
|
|
|
|||
|
|
@ -17,14 +17,14 @@ TileIdUtilities::createTileIdString(const TileID& tileId) {
|
|||
std::string
|
||||
operator()(const CesiumGeometry::QuadtreeTileID& quadtreeTileId) {
|
||||
// Strings of the form "L10-X23-Y144"
|
||||
return "L" + std::to_string(quadtreeTileId.level) + "-" + "X" +
|
||||
std::to_string(quadtreeTileId.x) + "-" + "Y" +
|
||||
return std::string("L") + std::to_string(quadtreeTileId.level) + "-" +
|
||||
"X" + std::to_string(quadtreeTileId.x) + "-" + "Y" +
|
||||
std::to_string(quadtreeTileId.y);
|
||||
}
|
||||
|
||||
std::string operator()(const CesiumGeometry::OctreeTileID& octreeTileId) {
|
||||
// Strings of the form "L10-X23-Y144-Z42"
|
||||
return "L" + std::to_string(octreeTileId.level) + "-" + "X" +
|
||||
return std::string("L") + std::to_string(octreeTileId.level) + "-" + "X" +
|
||||
std::to_string(octreeTileId.x) + "-" + "Y" +
|
||||
std::to_string(octreeTileId.y) + "-" + "Z" +
|
||||
std::to_string(octreeTileId.z);
|
||||
|
|
@ -33,7 +33,7 @@ TileIdUtilities::createTileIdString(const TileID& tileId) {
|
|||
std::string operator()(
|
||||
const CesiumGeometry::UpsampledQuadtreeNode& upsampledQuadtreeNode) {
|
||||
// Strings of the form "upsampled-L10-X23-Y144"
|
||||
return "upsampled-L" +
|
||||
return std::string("upsampled-L") +
|
||||
std::to_string(upsampledQuadtreeNode.tileID.level) + "-" + "X" +
|
||||
std::to_string(upsampledQuadtreeNode.tileID.x) + "-" + "Y" +
|
||||
std::to_string(upsampledQuadtreeNode.tileID.y);
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@ target_sources(
|
|||
PRIVATE
|
||||
${CESIUM_3DTILES_WRITER_SOURCES}
|
||||
${CESIUM_3DTILES_WRITER_HEADERS}
|
||||
PUBLIC
|
||||
${CESIUM_3DTILES_WRITER_PUBLIC_HEADERS}
|
||||
)
|
||||
|
||||
|
|
@ -45,8 +44,9 @@ cesium_target_include_directories(
|
|||
TARGET
|
||||
Cesium3DTilesWriter
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_LIST_DIR}/include
|
||||
${CMAKE_CURRENT_LIST_DIR}/generated/include
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/generated/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_LIST_DIR}/src
|
||||
${CMAKE_CURRENT_LIST_DIR}/generated/src
|
||||
|
|
|
|||
|
|
@ -24,15 +24,15 @@ target_sources(
|
|||
PRIVATE
|
||||
${CESIUM_ASYNC_SOURCES}
|
||||
${CESIUM_ASYNC_HEADERS}
|
||||
PUBLIC
|
||||
${CESIUM_ASYNC_PUBLIC_HEADERS}
|
||||
)
|
||||
|
||||
cesium_target_include_directories(
|
||||
TARGET
|
||||
TARGET
|
||||
CesiumAsync
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_LIST_DIR}/include
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_LIST_DIR}/src/
|
||||
)
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ target_sources(
|
|||
PRIVATE
|
||||
${CESIUM_CLIENT_COMMON_SOURCES}
|
||||
${CESIUM_CLIENT_COMMON_HEADERS}
|
||||
PUBLIC
|
||||
${CESIUM_CLIENT_COMMON_PUBLIC_HEADERS}
|
||||
)
|
||||
|
||||
|
|
@ -33,7 +32,9 @@ cesium_target_include_directories(
|
|||
TARGET
|
||||
CesiumClientCommon
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_LIST_DIR}/include
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/generated/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
)
|
||||
|
||||
target_link_libraries(CesiumClientCommon
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ target_sources(
|
|||
PRIVATE
|
||||
${CESIUM_GEOMETRY_SOURCES}
|
||||
${CESIUM_GEOMETRY_HEADERS}
|
||||
PUBLIC
|
||||
${CESIUM_GEOMETRY_PUBLIC_HEADERS}
|
||||
)
|
||||
|
||||
|
|
@ -32,7 +31,8 @@ cesium_target_include_directories(
|
|||
TARGET
|
||||
CesiumGeometry
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_LIST_DIR}/include
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
)
|
||||
|
||||
target_link_libraries(CesiumGeometry PUBLIC
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ target_sources(
|
|||
PRIVATE
|
||||
${CESIUM_GEOSPATIAL_SOURCES}
|
||||
${CESIUM_GEOSPATIAL_HEADERS}
|
||||
PUBLIC
|
||||
${CESIUM_GEOSPATIAL_PUBLIC_HEADERS}
|
||||
)
|
||||
|
||||
|
|
@ -33,15 +32,16 @@ cesium_target_include_directories(
|
|||
TARGET
|
||||
CesiumGeospatial
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_LIST_DIR}/include
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
)
|
||||
|
||||
target_link_libraries(CesiumGeospatial
|
||||
PUBLIC
|
||||
CesiumGeometry
|
||||
CesiumUtility
|
||||
earcut
|
||||
PRIVATE
|
||||
$<BUILD_INTERFACE:earcut>
|
||||
s2::s2
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,9 @@
|
|||
#pragma warning(disable : 4100 4127 4309 4996)
|
||||
|
||||
#define _CHAR_UNSIGNED
|
||||
#ifndef NOMINMAX
|
||||
#define NOMINMAX
|
||||
#endif
|
||||
#define _USE_MATH_DEFINES
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@ target_sources(
|
|||
PRIVATE
|
||||
${CESIUM_GLTF_SOURCES}
|
||||
${CESIUM_GLTF_HEADERS}
|
||||
PUBLIC
|
||||
${CESIUM_GLTF_PUBLIC_HEADERS}
|
||||
)
|
||||
|
||||
|
|
@ -44,8 +43,9 @@ cesium_target_include_directories(
|
|||
TARGET
|
||||
CesiumGltf
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_LIST_DIR}/include
|
||||
${CMAKE_CURRENT_LIST_DIR}/generated/include
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include/>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/generated/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_LIST_DIR}/src
|
||||
${CMAKE_CURRENT_LIST_DIR}/generated/src
|
||||
|
|
|
|||
|
|
@ -127,6 +127,26 @@ std::string convertPropertyTypeToString(PropertyType type);
|
|||
*/
|
||||
PropertyType convertStringToPropertyType(const std::string& str);
|
||||
|
||||
/**
|
||||
* @brief Converts a string type listed in \ref AccessorSpec::Type to its
|
||||
* corresponding \ref PropertyType.
|
||||
*
|
||||
* @param type The string to convert to a \ref PropertyType.
|
||||
* @returns The corresponding \ref PropertyType, or \ref PropertyType::Invalid
|
||||
* if no conversion is possible.
|
||||
*/
|
||||
PropertyType convertAccessorTypeToPropertyType(const std::string& type);
|
||||
|
||||
/**
|
||||
* @brief Converts a \ref PropertyType to a string type listed in \ref
|
||||
* AccessorSpec::Type.
|
||||
*
|
||||
* @param type The \ref PropertyType to convert to a string.
|
||||
* @returns The string listed in AccessorSpec::Type, or `"INVALID"` if no
|
||||
* conversion is possible.
|
||||
*/
|
||||
std::string convertPropertyTypeToAccessorType(PropertyType type);
|
||||
|
||||
/**
|
||||
* @brief Converts a \ref PropertyComponentType value to a string.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -81,6 +81,59 @@ PropertyType convertStringToPropertyType(const std::string& str) {
|
|||
return PropertyType::Invalid;
|
||||
}
|
||||
|
||||
PropertyType convertAccessorTypeToPropertyType(const std::string& type) {
|
||||
if (type == AccessorSpec::Type::SCALAR) {
|
||||
return PropertyType::Scalar;
|
||||
}
|
||||
|
||||
if (type == AccessorSpec::Type::VEC2) {
|
||||
return PropertyType::Vec2;
|
||||
}
|
||||
|
||||
if (type == AccessorSpec::Type::VEC3) {
|
||||
return PropertyType::Vec3;
|
||||
}
|
||||
|
||||
if (type == AccessorSpec::Type::VEC4) {
|
||||
return PropertyType::Vec4;
|
||||
}
|
||||
|
||||
if (type == AccessorSpec::Type::MAT2) {
|
||||
return PropertyType::Mat2;
|
||||
}
|
||||
|
||||
if (type == AccessorSpec::Type::MAT3) {
|
||||
return PropertyType::Mat3;
|
||||
}
|
||||
|
||||
if (type == AccessorSpec::Type::MAT4) {
|
||||
return PropertyType::Mat4;
|
||||
}
|
||||
|
||||
return PropertyType::Invalid;
|
||||
}
|
||||
|
||||
std::string convertPropertyTypeToAccessorType(PropertyType type) {
|
||||
switch (type) {
|
||||
case PropertyType::Scalar:
|
||||
return AccessorSpec::Type::SCALAR;
|
||||
case PropertyType::Vec2:
|
||||
return AccessorSpec::Type::VEC2;
|
||||
case PropertyType::Vec3:
|
||||
return AccessorSpec::Type::VEC3;
|
||||
case PropertyType::Vec4:
|
||||
return AccessorSpec::Type::VEC4;
|
||||
case PropertyType::Mat2:
|
||||
return AccessorSpec::Type::MAT2;
|
||||
case PropertyType::Mat3:
|
||||
return AccessorSpec::Type::MAT3;
|
||||
case PropertyType::Mat4:
|
||||
return AccessorSpec::Type::MAT4;
|
||||
default:
|
||||
return "INVALID";
|
||||
}
|
||||
}
|
||||
|
||||
std::string convertPropertyComponentTypeToString(PropertyComponentType type) {
|
||||
switch (type) {
|
||||
case PropertyComponentType::None:
|
||||
|
|
|
|||
|
|
@ -141,6 +141,60 @@ TEST_CASE("Test convertPropertyTypeToString") {
|
|||
REQUIRE(
|
||||
convertPropertyTypeToString(PropertyType::Enum) ==
|
||||
ClassProperty::Type::ENUM);
|
||||
|
||||
REQUIRE(convertPropertyTypeToString(PropertyType::Invalid) == "INVALID");
|
||||
}
|
||||
|
||||
TEST_CASE("Test convertAccessorTypeToPropertyType") {
|
||||
REQUIRE(
|
||||
convertAccessorTypeToPropertyType(AccessorSpec::Type::SCALAR) ==
|
||||
PropertyType::Scalar);
|
||||
REQUIRE(
|
||||
convertAccessorTypeToPropertyType(AccessorSpec::Type::VEC2) ==
|
||||
PropertyType::Vec2);
|
||||
REQUIRE(
|
||||
convertAccessorTypeToPropertyType(AccessorSpec::Type::VEC3) ==
|
||||
PropertyType::Vec3);
|
||||
REQUIRE(
|
||||
convertAccessorTypeToPropertyType(AccessorSpec::Type::VEC4) ==
|
||||
PropertyType::Vec4);
|
||||
REQUIRE(
|
||||
convertAccessorTypeToPropertyType(AccessorSpec::Type::MAT2) ==
|
||||
PropertyType::Mat2);
|
||||
REQUIRE(
|
||||
convertAccessorTypeToPropertyType(AccessorSpec::Type::MAT3) ==
|
||||
PropertyType::Mat3);
|
||||
REQUIRE(
|
||||
convertAccessorTypeToPropertyType(AccessorSpec::Type::MAT4) ==
|
||||
PropertyType::Mat4);
|
||||
REQUIRE(
|
||||
convertAccessorTypeToPropertyType("invalid") == PropertyType::Invalid);
|
||||
}
|
||||
|
||||
TEST_CASE("Test convertPropertyTypeToAccessorType") {
|
||||
REQUIRE(
|
||||
convertPropertyTypeToAccessorType(PropertyType::Scalar) ==
|
||||
AccessorSpec::Type::SCALAR);
|
||||
REQUIRE(
|
||||
convertPropertyTypeToAccessorType(PropertyType::Vec2) ==
|
||||
AccessorSpec::Type::VEC2);
|
||||
REQUIRE(
|
||||
convertPropertyTypeToAccessorType(PropertyType::Vec3) ==
|
||||
AccessorSpec::Type::VEC3);
|
||||
REQUIRE(
|
||||
convertPropertyTypeToAccessorType(PropertyType::Vec4) ==
|
||||
AccessorSpec::Type::VEC4);
|
||||
REQUIRE(
|
||||
convertPropertyTypeToAccessorType(PropertyType::Mat2) ==
|
||||
AccessorSpec::Type::MAT2);
|
||||
REQUIRE(
|
||||
convertPropertyTypeToAccessorType(PropertyType::Mat3) ==
|
||||
AccessorSpec::Type::MAT3);
|
||||
REQUIRE(
|
||||
convertPropertyTypeToAccessorType(PropertyType::Mat4) ==
|
||||
AccessorSpec::Type::MAT4);
|
||||
REQUIRE(
|
||||
convertPropertyTypeToAccessorType(PropertyType::Invalid) == "INVALID");
|
||||
}
|
||||
|
||||
TEST_CASE("Test convertPropertyComponentTypeToString") {
|
||||
|
|
@ -183,6 +237,10 @@ TEST_CASE("Test convertPropertyComponentTypeToString") {
|
|||
REQUIRE(
|
||||
convertPropertyComponentTypeToString(PropertyComponentType::Float64) ==
|
||||
ClassProperty::ComponentType::FLOAT64);
|
||||
|
||||
REQUIRE(
|
||||
convertPropertyComponentTypeToString(PropertyComponentType::None) ==
|
||||
"NONE");
|
||||
}
|
||||
|
||||
TEST_CASE("Test convertArrayOffsetTypeStringToPropertyComponentType") {
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@ target_sources(
|
|||
PRIVATE
|
||||
${CESIUM_GLTF_CONTENT_SOURCES}
|
||||
${CESIUM_GLTF_CONTENT_HEADERS}
|
||||
PUBLIC
|
||||
${CESIUM_GLTF_CONTENT_PUBLIC_HEADERS}
|
||||
)
|
||||
|
||||
|
|
@ -45,8 +44,9 @@ cesium_target_include_directories(
|
|||
TARGET
|
||||
CesiumGltfContent
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_LIST_DIR}/include
|
||||
${CMAKE_CURRENT_LIST_DIR}/generated/include
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/generated/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_LIST_DIR}/src
|
||||
${CMAKE_CURRENT_LIST_DIR}/generated/src
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@ target_sources(
|
|||
PRIVATE
|
||||
${CESIUM_GLTF_READER_SOURCES}
|
||||
${CESIUM_GLTF_READER_HEADERS}
|
||||
PUBLIC
|
||||
${CESIUM_GLTF_READER_PUBLIC_HEADERS}
|
||||
)
|
||||
|
||||
|
|
@ -45,8 +44,9 @@ cesium_target_include_directories(
|
|||
TARGET
|
||||
CesiumGltfReader
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_LIST_DIR}/include
|
||||
${CMAKE_CURRENT_LIST_DIR}/generated/include
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/generated/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_LIST_DIR}/src
|
||||
${CMAKE_CURRENT_LIST_DIR}/generated/src
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@ target_sources(
|
|||
PRIVATE
|
||||
${CESIUM_GLTF_WRITER_SOURCES}
|
||||
${CESIUM_GLTF_WRITER_HEADERS}
|
||||
PUBLIC
|
||||
${CESIUM_GLTF_WRITER_PUBLIC_HEADERS}
|
||||
)
|
||||
|
||||
|
|
@ -44,8 +43,9 @@ cesium_target_include_directories(
|
|||
TARGET
|
||||
CesiumGltfWriter
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_LIST_DIR}/include
|
||||
${CMAKE_CURRENT_LIST_DIR}/generated/include
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/generated/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_LIST_DIR}/src
|
||||
${CMAKE_CURRENT_LIST_DIR}/generated/src
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ target_sources(
|
|||
PRIVATE
|
||||
${CESIUM_ITWIN_CLIENT_SOURCES}
|
||||
${CESIUM_ITWIN_CLIENT_HEADERS}
|
||||
PUBLIC
|
||||
${CESIUM_ITWIN_CLIENT_PUBLIC_HEADERS}
|
||||
)
|
||||
|
||||
|
|
@ -33,7 +32,9 @@ cesium_target_include_directories(
|
|||
TARGET
|
||||
CesiumITwinClient
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_LIST_DIR}/include
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/generated/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
)
|
||||
|
||||
target_link_libraries(CesiumITwinClient
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ target_sources(
|
|||
PRIVATE
|
||||
${CESIUM_ION_CLIENT_SOURCES}
|
||||
${CESIUM_ION_CLIENT_HEADERS}
|
||||
PUBLIC
|
||||
${CESIUM_ION_CLIENT_PUBLIC_HEADERS}
|
||||
)
|
||||
|
||||
|
|
@ -33,7 +32,8 @@ cesium_target_include_directories(
|
|||
TARGET
|
||||
CesiumIonClient
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_LIST_DIR}/include
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
)
|
||||
|
||||
target_link_libraries(CesiumIonClient
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ target_sources(
|
|||
PRIVATE
|
||||
${CESIUM_JSON_READER_SOURCES}
|
||||
${CESIUM_JSON_READER_HEADERS}
|
||||
PUBLIC
|
||||
${CESIUM_JSON_READER_PUBLIC_HEADERS}
|
||||
)
|
||||
|
||||
|
|
@ -32,8 +31,9 @@ cesium_target_include_directories(
|
|||
TARGET
|
||||
CesiumJsonReader
|
||||
PUBLIC
|
||||
${CMAKE_BINARY_DIR}
|
||||
${CMAKE_CURRENT_LIST_DIR}/include
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_LIST_DIR}/src
|
||||
)
|
||||
|
|
|
|||
|
|
@ -33,7 +33,6 @@ target_sources(
|
|||
PRIVATE
|
||||
${CESIUM_JSON_WRITER_SOURCES}
|
||||
${CESIUM_JSON_WRITER_HEADERS}
|
||||
PUBLIC
|
||||
${CESIUM_JSON_WRITER_PUBLIC_HEADERS}
|
||||
)
|
||||
|
||||
|
|
@ -41,7 +40,8 @@ cesium_target_include_directories(
|
|||
TARGET
|
||||
CesiumJsonWriter
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_LIST_DIR}/include
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_LIST_DIR}/src
|
||||
)
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@ target_sources(
|
|||
PRIVATE
|
||||
${CESIUM_QUANTIZED_MESH_TERRAIN_SOURCES}
|
||||
${CESIUM_QUANTIZED_MESH_TERRAIN_HEADERS}
|
||||
PUBLIC
|
||||
${CESIUM_QUANTIZED_MESH_TERRAIN_PUBLIC_HEADERS}
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ target_sources(
|
|||
PRIVATE
|
||||
${CESIUM_RASTER_OVERLAYS_SOURCES}
|
||||
${CESIUM_RASTER_OVERLAYS_HEADERS}
|
||||
PUBLIC
|
||||
${CESIUM_RASTER_OVERLAYS_PUBLIC_HEADERS}
|
||||
)
|
||||
|
||||
|
|
@ -33,7 +32,8 @@ cesium_target_include_directories(
|
|||
TARGET
|
||||
CesiumRasterOverlays
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_LIST_DIR}/include
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_LIST_DIR}/src
|
||||
)
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ target_sources(
|
|||
PRIVATE
|
||||
${CESIUM_UTILITY_SOURCES}
|
||||
${CESIUM_UTILITY_HEADERS}
|
||||
PUBLIC
|
||||
${CESIUM_UTILITY_PUBLIC_HEADERS}
|
||||
)
|
||||
|
||||
|
|
@ -33,11 +32,10 @@ cesium_target_include_directories(
|
|||
TARGET
|
||||
CesiumUtility
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_LIST_DIR}/include
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_LIST_DIR}/src
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../extern/zlib
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../extern/zlib-src
|
||||
)
|
||||
|
||||
target_link_libraries(
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
include(${CMAKE_CURRENT_LIST_DIR}/cesium-nativeTargets.cmake)
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
@PACKAGE-INIT@
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
|
||||
|
||||
include(CMakeFindDependencyMacro)
|
||||
|
||||
find_dependency(zlib-ng REQUIRED)
|
||||
find_dependency(modp_b64 REQUIRED)
|
||||
|
||||
find_dependency(Async++ CONFIG REQUIRED)
|
||||
find_dependency(doctest CONFIG REQUIRED)
|
||||
find_dependency(draco CONFIG REQUIRED)
|
||||
find_dependency(expected-lite CONFIG REQUIRED)
|
||||
find_dependency(glm CONFIG REQUIRED)
|
||||
find_dependency(meshoptimizer CONFIG REQUIRED)
|
||||
find_dependency(Microsoft.GSL REQUIRED)
|
||||
find_dependency(httplib CONFIG REQUIRED)
|
||||
find_dependency(Ktx CONFIG REQUIRED)
|
||||
find_dependency(libmorton CONFIG REQUIRED)
|
||||
find_dependency(libjpeg-turbo CONFIG REQUIRED)
|
||||
find_dependency(OpenSSL REQUIRED)
|
||||
find_dependency(s2 CONFIG REQUIRED)
|
||||
find_dependency(spdlog CONFIG REQUIRED)
|
||||
find_dependency(tinyxml2 CONFIG REQUIRED)
|
||||
find_dependency(unofficial-sqlite3 CONFIG REQUIRED)
|
||||
find_dependency(ada CONFIG REQUIRED)
|
||||
find_dependency(WebP CONFIG REQUIRED)
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/cesium-nativeTargets.cmake")
|
||||
|
|
@ -54,6 +54,11 @@ function(configure_cesium_library targetName)
|
|||
${capitalizedTargetName}_BUILDING
|
||||
)
|
||||
|
||||
install(TARGETS ${targetName}
|
||||
EXPORT CesiumExports
|
||||
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
)
|
||||
|
||||
if(CESIUM_INSTALL_HEADERS)
|
||||
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,50 @@
|
|||
# Yes, on non-windows platforms the name of the library really is liblibmodpbase64.a
|
||||
# Don't ask me, I didn't do it.
|
||||
|
||||
find_library(modp_b64_DEBUG_LIBRARIES
|
||||
NAMES
|
||||
modpbase64d
|
||||
libmodpbase64d
|
||||
)
|
||||
|
||||
# vcpkg specific locations for debug libraries if they are not already found
|
||||
set(modpbase64SavePrefixPath ${CMAKE_PREFIX_PATH})
|
||||
list(FILTER CMAKE_PREFIX_PATH INCLUDE REGEX "/debug")
|
||||
find_library(modp_b64_DEBUG_LIBRARIES
|
||||
NAMES
|
||||
modpbase64
|
||||
libmodpbase64
|
||||
)
|
||||
set(CMAKE_PREFIX_PATH ${modpbase64SavePrefixPath})
|
||||
|
||||
set(modpbase64SavePrefixPath ${CMAKE_PREFIX_PATH})
|
||||
list(FILTER CMAKE_PREFIX_PATH EXCLUDE REGEX "/debug")
|
||||
find_library(modp_b64_LIBRARIES NAMES modpbase64 libmodpbase64)
|
||||
set(CMAKE_PREFIX_PATH ${modpbase64SavePrefixPath})
|
||||
|
||||
find_path(modp_b64_INCLUDE_DIRS NAMES modp_b64.h)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
find_package_handle_standard_args(modp_b64
|
||||
FOUND_VAR
|
||||
modp_b64_FOUND
|
||||
REQUIRED_VARS
|
||||
modp_b64_LIBRARIES
|
||||
modp_b64_INCLUDE_DIRS
|
||||
)
|
||||
|
||||
mark_as_advanced(modp_b64_LIBRARIES modp_b64_INCLUDE_DIRS)
|
||||
|
||||
if(modp_b64_FOUND AND NOT TARGET modp_b64::modp_b64)
|
||||
add_library(modp_b64::modp_b64 UNKNOWN IMPORTED)
|
||||
set_target_properties(modp_b64::modp_b64 PROPERTIES
|
||||
IMPORTED_LOCATION "${modp_b64_LIBRARIES}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${modp_b64_INCLUDE_DIRS}"
|
||||
)
|
||||
if(modp_b64_DEBUG_LIBRARIES)
|
||||
set_target_properties(modp_b64::modp_b64 PROPERTIES
|
||||
IMPORTED_LOCATION_DEBUG "${modp_b64_DEBUG_LIBRARIES}"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
|
||||
find_library(zlib-ng_LIBRARIES NAMES zlibstatic-ng z-ng zlib-ng)
|
||||
find_library(zlib-ng_DEBUG_LIBRARIES
|
||||
NAMES
|
||||
"zlibstatic-ngd"
|
||||
"z-ngd"
|
||||
"zlib-ngd"
|
||||
)
|
||||
|
||||
# vcpkg specific locations for debug libraries if they are not already found
|
||||
set(zlibngSavePrefixPath ${CMAKE_PREFIX_PATH})
|
||||
list(FILTER CMAKE_PREFIX_PATH INCLUDE REGEX "/debug")
|
||||
find_library(zlib-ng_DEBUG_LIBRARIES
|
||||
NAMES
|
||||
zlibstatic
|
||||
z-ng
|
||||
zlib-ng
|
||||
)
|
||||
set(CMAKE_PREFIX_PATH ${zlibngSavePrefixPath})
|
||||
|
||||
find_path(zlib-ng_INCLUDE_DIRS NAMES zlib-ng.h)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
find_package_handle_standard_args(zlib-ng
|
||||
FOUND_VAR
|
||||
zlib-ng_FOUND
|
||||
REQUIRED_VARS
|
||||
zlib-ng_LIBRARIES
|
||||
zlib-ng_INCLUDE_DIRS
|
||||
)
|
||||
|
||||
mark_as_advanced(zlib-ng_LIBRARIES zlib-ng_INCLUDE_DIRS)
|
||||
|
||||
if(zlib-ng_FOUND AND NOT TARGET zlib-ng::zlib-ng)
|
||||
add_library(zlib-ng::zlib-ng UNKNOWN IMPORTED)
|
||||
set_target_properties(zlib-ng::zlib-ng PROPERTIES
|
||||
IMPORTED_LOCATION "${zlib-ng_LIBRARIES}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${zlib-ng_INCLUDE_DIRS}"
|
||||
)
|
||||
if(zlib-ng_DEBUG_LIBRARIES)
|
||||
set_target_properties(zlib-ng::zlib-ng PROPERTIES
|
||||
IMPORTED_LOCATION_DEBUG "${zlib-ng_DEBUG_LIBRARIES}"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
{
|
||||
"version": 3,
|
||||
"configurePresets": [
|
||||
{
|
||||
"name": "vcpkg",
|
||||
"binaryDir": "${sourceDir}/build",
|
||||
"cacheVariables": {
|
||||
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
|
||||
"CESIUM_USE_EZVCPKG": "OFF"
|
||||
},
|
||||
"environment": {
|
||||
"CMAKE_POLICY_VERSION_MINIMUM": "3.5",
|
||||
"VCPKG_KEEP_ENV_VARS": "CMAKE_POLICY_VERSION_MINIMUM"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "vcpkg-ninja",
|
||||
"generator": "Ninja",
|
||||
"inherits": ["vcpkg"]
|
||||
},
|
||||
{
|
||||
"name": "vcpkg-ninja-multi",
|
||||
"generator": "Ninja Multi-Config",
|
||||
"inherits": ["vcpkg"]
|
||||
},
|
||||
{
|
||||
"name": "vcpkg-linux",
|
||||
"inherits": ["vcpkg"],
|
||||
"cacheVariables": {
|
||||
"VCPKG_TARGET_TRIPLET": "x64-linux",
|
||||
"VCPKG_HOST_TRIPLET": "x64-linux"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "vcpkg-windows",
|
||||
"inherits": ["vcpkg"],
|
||||
"cacheVariables": {
|
||||
"VCPKG_TARGET_TRIPLET": "x64-windows-static-md",
|
||||
"VCPKG_HOST_TRIPLET": "x64-windows-static-md"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "vcpkg-windows-vs",
|
||||
"inherits": ["vcpkg-windows"],
|
||||
"generator": "Visual Studio 17 2022"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 4,
|
||||
"include": ["doc/cmake-presets/CMakePresets.json"]
|
||||
}
|
||||
|
|
@ -30,30 +30,87 @@ This guide contains the basic setup information for developers looking to work w
|
|||
Check out the repo with:
|
||||
|
||||
```bash
|
||||
git clone git@github.com:CesiumGS/cesium-native.git --recurse-submodules
|
||||
git clone git@github.com:CesiumGS/cesium-native.git
|
||||
```
|
||||
|
||||
If you forget the `--recurse-submodules`, nothing will work because the git submodules will be missing. You should be able to fix it with:
|
||||
## Dependencies
|
||||
|
||||
Cesium Native manages its many dependencies using
|
||||
[vcpkg](https://github.com/microsoft/vcpkg). We use vcpkg's manifest
|
||||
mode, in which vcpkg reads the list of Cesium Native's dependencies
|
||||
and installs them. This requires a local installation of `vcpkg` and
|
||||
some extra arguments to CMake.
|
||||
|
||||
## vcpkg
|
||||
|
||||
After installing `vcpkg` -- usually by cloning it from
|
||||
https://github.com/microsoft/vcpkg -- run the proper bootstrap script
|
||||
and set the `VCPKG_ROOT` environment variable so that Cesium Native's
|
||||
build can find it:
|
||||
|
||||
```bash
|
||||
git submodule update --init --recursive
|
||||
cd vcpkg
|
||||
./bootstrap-vcpkg.sh
|
||||
export VCPKG_ROOT=$PWD
|
||||
```
|
||||
|
||||
## vcpkg and CMake
|
||||
|
||||
`vcpkg` hooks into CMake by loading a toolchain file, which is usually
|
||||
used in cross-compilation scenarios. You can specify this on the
|
||||
command line, but this can become a bit verbose as additional `vcpkg` options
|
||||
get added, so specifying them all in a CMake presets file is an
|
||||
interesting option. There are example preset files in the
|
||||
[cmake-presets](../cmake-presets) directory. We haven't included them
|
||||
in their normal spot in the source tree because they can cause some
|
||||
issues with VS Code, but you can copy
|
||||
[CMakeUserPresets.cmake](../cmake-presets/CMakeUserPresets.cmake) to
|
||||
the root of the Cesium Native source tree to use these predefined
|
||||
presets.
|
||||
|
||||
## Compiling Cesium Native
|
||||
|
||||
### Compile from command line
|
||||
|
||||
```bash
|
||||
## Windows compilation using Visual Studio
|
||||
cmake -B build -S . -G "Visual Studio 17 2022" -A x64
|
||||
cmake --build build --config Debug
|
||||
cmake --build build --config Release
|
||||
Using presets (on Linux):
|
||||
|
||||
## Linux compilation
|
||||
cmake -B build -S .
|
||||
```bash
|
||||
cp doc/cmake-presets/CMakeUserPresets.json .
|
||||
cmake --preset=vcpkg-linux -DCMAKE_BUILD_TYPE=Debug
|
||||
cmake --build build
|
||||
```
|
||||
|
||||
By hand:
|
||||
```bash
|
||||
cmake -B build -S . \
|
||||
-DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake \
|
||||
-DCESIUM_USE_EZVCPG=OFF
|
||||
```
|
||||
|
||||
On Windows:
|
||||
```bash
|
||||
cp doc/cmake-presets/CMakeUserPresets.json .
|
||||
cmake --preset=vcpkg-windows-vs
|
||||
cmake --build build --config Debug
|
||||
cmake --build build --config Release
|
||||
```
|
||||
|
||||
`vcpkg` specifies all information about the compilation target in a
|
||||
"triplet". For compiling Cesium Native as a stand-alone, the system
|
||||
defaults will usually work, but consumers of Cesium Native might need
|
||||
something more exotic. For example, one could configure a Windows
|
||||
build with:
|
||||
|
||||
```bash
|
||||
cmake -B build -S . \
|
||||
-DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake \
|
||||
-DCESIUM_USE_EZVCPG=OFF \
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md
|
||||
cmake --build build --config Debug
|
||||
cmake --build build --config Release
|
||||
```
|
||||
|
||||
|
||||
### Compile from Visual Studio Code
|
||||
|
||||
1) Install the `CMake Tools` extension. It should prompt you to generate project files from CMake.
|
||||
|
|
|
|||
|
|
@ -15,29 +15,8 @@ add_library(earcut INTERFACE)
|
|||
find_path(EARCUT_HPP_INCLUDE_DIRS "mapbox/earcut.hpp")
|
||||
target_include_directories(earcut INTERFACE "${EARCUT_HPP_INCLUDE_DIRS}")
|
||||
|
||||
|
||||
|
||||
# Modp_b64 doesn't contain a CMake config, so we construct a fake import library here
|
||||
add_library(modp_b64::modp_b64 STATIC IMPORTED GLOBAL)
|
||||
set_target_properties(modp_b64::modp_b64 PROPERTIES
|
||||
INCLUDE_DIRECTORIES "${PACKAGE_BUILD_DIR}/include"
|
||||
# Yes, on non-windows platforms the name of the library really is liblibmodpbase64.a
|
||||
# Don't ask me, I didn't do it.
|
||||
IMPORTED_LOCATION "${PACKAGE_BUILD_DIR}/lib/${EXTERN_LIB_PREFIX}libmodpbase64.${EXTERN_LIB_SUFFIX}"
|
||||
IMPORTED_LOCATION_DEBUG "${PACKAGE_BUILD_DIR}/debug/lib/${EXTERN_LIB_PREFIX}libmodpbase64.${EXTERN_LIB_SUFFIX}"
|
||||
)
|
||||
|
||||
# picosha2 also doesn't contain a CMake config, so we construct a fake header-only import library here
|
||||
add_library(picosha2::picosha2 IMPORTED INTERFACE GLOBAL)
|
||||
set_target_properties(picosha2::picosha2 PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${PACKAGE_BUILD_DIR}/include"
|
||||
)
|
||||
|
||||
find_library(ZLIB_NG_RELEASE_LIB NAMES zlibstatic-ng z-ng PATHS ${PACKAGE_BUILD_DIR}/lib NO_DEFAULT_PATH)
|
||||
find_library(ZLIB_NG_DEBUG_LIB NAMES zlibstatic-ngd z-ng PATHS ${PACKAGE_BUILD_DIR}/debug/lib NO_DEFAULT_PATH)
|
||||
add_library(zlib-ng::zlib-ng STATIC IMPORTED GLOBAL)
|
||||
target_include_directories(zlib-ng::zlib-ng INTERFACE "${PACKAGE_BUILD_DIR}/include")
|
||||
set_target_properties(zlib-ng::zlib-ng PROPERTIES
|
||||
IMPORTED_LOCATION "${ZLIB_NG_RELEASE_LIB}"
|
||||
IMPORTED_LOCATION_DEBUG "${ZLIB_NG_DEBUG_LIB}"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"default-registry": {
|
||||
"kind": "git",
|
||||
"baseline": "b2cb0da531c2f1f740045bfe7c4dac59f0b2b69c",
|
||||
"repository": "https://github.com/microsoft/vcpkg"
|
||||
},
|
||||
"registries": [
|
||||
{
|
||||
"kind": "artifact",
|
||||
"location": "https://github.com/microsoft/vcpkg-ce-catalog/archive/refs/heads/main.zip",
|
||||
"name": "microsoft"
|
||||
}
|
||||
],
|
||||
"overlay-ports": [
|
||||
"./extern/vcpkg/ports"
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"dependencies": [
|
||||
"asyncplusplus",
|
||||
"doctest",
|
||||
"expected-lite",
|
||||
"glm",
|
||||
"ms-gsl",
|
||||
"rapidjson",
|
||||
"spdlog",
|
||||
"stb",
|
||||
"ada-url",
|
||||
"draco",
|
||||
"ktx",
|
||||
"modp-base64",
|
||||
"meshoptimizer",
|
||||
"openssl",
|
||||
"s2geometry",
|
||||
"libjpeg-turbo",
|
||||
"sqlite3",
|
||||
"tinyxml2",
|
||||
"libwebp",
|
||||
"zlib-ng",
|
||||
"picosha2",
|
||||
"earcut-hpp",
|
||||
"cpp-httplib",
|
||||
"libmorton",
|
||||
"zstd"
|
||||
]
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue