This project implements a set of foundational C++ libraries to power Sourcemeta projects.
Live at head
Like projects such as GoogleTest
, this project follows the Abseil Live at Head philosophy. We recommend always following the latest commit in the main
branch.
Installation
As a git submodule
# Add the project as a submodule, in this case to deps/core
$ git submodule add https://github.com/sourcemeta/core.git deps/core
# Add the project as a CMake subdirectory
add_subdirectory("${PROJECT_SOURCE_DIR}/deps/core")
# Link your targets accordingly
target_link_libraries(my_executable_or_library PUBLIC sourcemeta::core::json)
target_link_libraries(my_executable_or_library PUBLIC sourcemeta::core::jsonschema)
target_link_libraries(my_executable_or_library PUBLIC sourcemeta::core::jsonpointer)
target_link_libraries(my_executable_or_library PUBLIC sourcemeta::core::jsonl)
Using FetchContent
cmake_minimum_required(VERSION 3.14)
project(my_project)
set(CMAKE_CXX_STANDARD 20)
include(FetchContent)
FetchContent_Declare(
core
URL https://github.com/sourcemeta/core/archive/<commit-sha>.zip
DOWNLOAD_EXTRACT_TIMESTAMP NO)
FetchContent_MakeAvailable(core)
add_executable(my_example ...)
target_link_libraries(my_example PUBLIC sourcemeta::core::json)
target_link_libraries(my_example PUBLIC sourcemeta::core::jsonschema)
target_link_libraries(my_example PUBLIC sourcemeta::core::jsonpointer)
target_link_libraries(my_example PUBLIC sourcemeta::core::jsonl)
Using find_package
Assuming you have installed Sourcemeta Core in a place where CMake can find the package config file:
find_package(Core REQUIRED)
# This package also supports component-based inclusion
find_package(Core REQUIRED COMPONENTS json jsonschema jsonpointer jsonl)
# Link your targets accordingly
target_link_libraries(my_executable_or_library PUBLIC sourcemeta::core::json)
target_link_libraries(my_executable_or_library PUBLIC sourcemeta::core::jsonschema)
target_link_libraries(my_executable_or_library PUBLIC sourcemeta::core::jsonpointer)
target_link_libraries(my_executable_or_library PUBLIC sourcemeta::core::jsonl)
CMake
Options
Check the top-level CMakeLists.txt
for the available CMake options.
Components
If you install Sourcemeta Core from source, keep in mind that the project is split into a set of CMake components:
Component | Description |
sourcemeta_core | The Sourcemeta Core libraries |
sourcemeta_core_dev | The Sourcemeta Core headers and development files |
Contributing
You can configure, build and test the project by simply runnning:
# On UNIX-based systems
make
# On Windows
nmake