diff --git a/.vscode/settings.json b/.vscode/settings.json index 0172d50e4..6dc2f2d86 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -10,7 +10,8 @@ "${workspaceFolder}/build/third_party/minizip/install/include", "${workspaceFolder}/build/third_party/nanoflann/install/include", "${workspaceFolder}/build/third_party/pybind11/install/include", - "${workspaceFolder}/build/third_party/spdlog/install/include" + "${workspaceFolder}/build/third_party/spdlog/install/include", + "${workspaceFolder}/build/third_party/json/install/include" ], "C_Cpp.default.browse.path": [ "${workspaceFolder}/include", @@ -23,7 +24,8 @@ "${workspaceFolder}/build/third_party/minizip/install/include", "${workspaceFolder}/build/third_party/nanoflann/install/include", "${workspaceFolder}/build/third_party/pybind11/install/include", - "${workspaceFolder}/build/third_party/spdlog/install/include" + "${workspaceFolder}/build/third_party/spdlog/install/include", + "${workspaceFolder}/build/third_party/json/install/include" ], "files.watcherExclude": { "${workspaceFolder}/build/**": true diff --git a/cmake/ConfigureJson.cmake b/cmake/ConfigureJson.cmake new file mode 100644 index 000000000..e49762b18 --- /dev/null +++ b/cmake/ConfigureJson.cmake @@ -0,0 +1,27 @@ +# +# Copyright (c) 2019 - 2026 Geode-solutions. All rights reserved. +# + + +set(JSON_PATH ${PROJECT_BINARY_DIR}/third_party/json) +set(JSON_INSTALL_PREFIX ${JSON_PATH}/install) +ExternalProject_Add(json + PREFIX ${JSON_PATH} + SOURCE_DIR ${JSON_PATH}/src + BINARY_DIR ${JSON_PATH}/build + STAMP_DIR ${JSON_PATH}/stamp + GIT_REPOSITORY https://github.com/nlohmann/json + GIT_TAG v3.11.3 + GIT_SHALLOW ON + GIT_PROGRESS ON + CMAKE_GENERATOR ${CMAKE_GENERATOR} + CMAKE_GENERATOR_PLATFORM ${CMAKE_GENERATOR_PLATFORM} + CMAKE_ARGS + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_INSTALL_MESSAGE=LAZY + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + CMAKE_CACHE_ARGS + -DCMAKE_INSTALL_PREFIX:PATH=${JSON_INSTALL_PREFIX} + -DJSON_BuildTests:BOOL=OFF + -DJSON_MultipleHeaders:BOOL=ON +) diff --git a/cmake/ConfigureOpenGeode.cmake b/cmake/ConfigureOpenGeode.cmake index 08dfbf08b..b2db56de9 100644 --- a/cmake/ConfigureOpenGeode.cmake +++ b/cmake/ConfigureOpenGeode.cmake @@ -56,6 +56,7 @@ ExternalProject_Add(opengeode -DPYBIND11_INSTALL_PREFIX:PATH=${PYBIND11_INSTALL_PREFIX} -DPYBIND11_PYTHON_VERSION:STRING=${PYTHON_VERSION} -DCMAKE_INSTALL_PREFIX:PATH=${OpenGeode_PATH_INSTALL} + -DJSON_INSTALL_PREFIX:PATH=${JSON_INSTALL_PREFIX} BINARY_DIR ${OpenGeode_PATH_BIN} DEPENDS abseil @@ -66,6 +67,7 @@ ExternalProject_Add(opengeode minizip nanoflann spdlog + json ${bindings} ) diff --git a/cmake/OpenGeode.cmake b/cmake/OpenGeode.cmake index 7c67b18e4..68ba4ae98 100644 --- a/cmake/OpenGeode.cmake +++ b/cmake/OpenGeode.cmake @@ -35,6 +35,7 @@ find_package(earcut_hpp REQUIRED CONFIG NO_DEFAULT_PATH PATHS ${EARCUT_INSTALL_P find_package(minizip-ng REQUIRED CONFIG NO_DEFAULT_PATH PATHS ${MINIZIP_INSTALL_PREFIX}) find_package(nanoflann REQUIRED CONFIG NO_DEFAULT_PATH PATHS ${NANOFLANN_INSTALL_PREFIX}) find_package(spdlog REQUIRED CONFIG NO_DEFAULT_PATH PATHS ${SPDLOG_INSTALL_PREFIX}) +find_package(nlohmann_json REQUIRED CONFIG NO_DEFAULT_PATH PATHS ${JSON_INSTALL_PREFIX}) find_package(Threads REQUIRED) # Install OpenGeode third-parties @@ -45,6 +46,7 @@ install( ${BITSERY_INSTALL_PREFIX}/ ${GDAL_INSTALL_PREFIX}/ ${PROJ_INSTALL_PREFIX}/ + ${JSON_INSTALL_PREFIX}/ DESTINATION . COMPONENT diff --git a/cmake/OpenGeodeConfig.cmake.in b/cmake/OpenGeodeConfig.cmake.in index 9aa673860..5222dd224 100644 --- a/cmake/OpenGeodeConfig.cmake.in +++ b/cmake/OpenGeodeConfig.cmake.in @@ -47,6 +47,7 @@ if(library_type STREQUAL "STATIC_LIBRARY") find_dependency(minizip-ng) find_dependency(nanoflann) find_dependency(spdlog) + find_dependency(nlohmann_json) endif() set(CMAKE_CXX_STANDARD @OPENGEODE_CXX_STANDARD@) diff --git a/cmake/SuperBuild.cmake b/cmake/SuperBuild.cmake index aa0e3bf62..463b354b4 100644 --- a/cmake/SuperBuild.cmake +++ b/cmake/SuperBuild.cmake @@ -58,6 +58,7 @@ include(${PROJECT_SOURCE_DIR}/cmake/ConfigureSpdlog.cmake) include(${PROJECT_SOURCE_DIR}/cmake/ConfigureSQLite.cmake) include(${PROJECT_SOURCE_DIR}/cmake/ConfigurePROJ.cmake) include(${PROJECT_SOURCE_DIR}/cmake/ConfigureGDAL.cmake) +include(${PROJECT_SOURCE_DIR}/cmake/ConfigureJson.cmake) if(OPENGEODE_WITH_PYTHON OR INCLUDE_PYBIND11) include(${PROJECT_SOURCE_DIR}/cmake/ConfigurePybind11.cmake) diff --git a/include/geode/basic/input.hpp b/include/geode/basic/input.hpp index 5b981de22..8fb46c363 100644 --- a/include/geode/basic/input.hpp +++ b/include/geode/basic/input.hpp @@ -23,6 +23,8 @@ #pragma once +#include + #include #include #include