add single_header CMake target
This commit is contained in:
parent
57d822b6e2
commit
7e4ee23f40
5 changed files with 19119 additions and 27 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -21,3 +21,6 @@ benchmarks/files/numbers/*.json
|
|||
cmake-build-debug
|
||||
|
||||
test/test-*
|
||||
amalgamate
|
||||
single_include
|
||||
third_party/Amalgamate
|
||||
|
|
|
@ -6,6 +6,12 @@ cmake_minimum_required(VERSION 3.0.0)
|
|||
##
|
||||
project(nlohmann_json VERSION 3.0.1 LANGUAGES CXX)
|
||||
|
||||
##
|
||||
## INCLUDE
|
||||
##
|
||||
##
|
||||
include(ExternalProject)
|
||||
|
||||
##
|
||||
## OPTIONS
|
||||
##
|
||||
|
@ -15,7 +21,7 @@ option(JSON_BuildTests "Build the unit tests when BUILD_TESTING is enabled." ON)
|
|||
## CONFIGURATION
|
||||
##
|
||||
set(NLOHMANN_JSON_TARGET_NAME ${PROJECT_NAME})
|
||||
set(NLOHMANN_JSON_SOURCE_DIR "src/")
|
||||
set(NLOHMANN_JSON_SOURCE_DIR "src")
|
||||
set(NLOHMANN_JSON_CONFIG_INSTALL_DIR "lib/cmake/${PROJECT_NAME}")
|
||||
set(NLOHMANN_JSON_INCLUDE_INSTALL_DIR "include")
|
||||
set(NLOHMANN_JSON_HEADER_INSTALL_DIR "${NLOHMANN_JSON_INCLUDE_INSTALL_DIR}/nlohmann")
|
||||
|
@ -62,6 +68,19 @@ if(BUILD_TESTING AND JSON_BuildTests)
|
|||
add_subdirectory(test)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(amalgamate
|
||||
GIT_REPOSITORY "https://github.com/theodelrieu/Amalgamate"
|
||||
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}"
|
||||
)
|
||||
|
||||
# There is no way to tell amalgamate to force-write the output file even if it already exists...
|
||||
add_custom_target(single_header ALL rm -f "${CMAKE_SOURCE_DIR}/single_header/json.hpp"
|
||||
COMMENT "Amalgamating json.hpp..."
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/${NLOHMANN_JSON_SOURCE_DIR}
|
||||
DEPENDS amalgamate
|
||||
COMMAND "${CMAKE_BINARY_DIR}/bin/amalgamate" -w '*.hpp' -i . json.hpp "${CMAKE_SOURCE_DIR}/single_header/json.hpp"
|
||||
)
|
||||
|
||||
##
|
||||
## INSTALL
|
||||
## install header files, generate and install cmake config files for find_package()
|
||||
|
|
53
Makefile
53
Makefile
|
@ -1,29 +1,32 @@
|
|||
.PHONY: pretty clean ChangeLog.md
|
||||
|
||||
SRCDIR = src
|
||||
SRCS = ${SRCDIR}/json.hpp \
|
||||
${SRCDIR}/json_fwd.hpp \
|
||||
${SRCDIR}/detail/macro_scope.hpp \
|
||||
${SRCDIR}/detail/macro_unscope.hpp \
|
||||
${SRCDIR}/detail/meta.hpp \
|
||||
${SRCDIR}/detail/exceptions.hpp \
|
||||
${SRCDIR}/detail/value_t.hpp \
|
||||
${SRCDIR}/detail/conversions/from_json.hpp \
|
||||
${SRCDIR}/detail/conversions/to_json.hpp \
|
||||
${SRCDIR}/detail/parsing/input_adapters.hpp \
|
||||
${SRCDIR}/detail/parsing/lexer.hpp \
|
||||
${SRCDIR}/detail/parsing/parser.hpp \
|
||||
${SRCDIR}/detail/iterators/primitive_iterator.hpp \
|
||||
${SRCDIR}/detail/iterators/internal_iterator.hpp \
|
||||
${SRCDIR}/detail/iterators/iter_impl.hpp \
|
||||
${SRCDIR}/detail/iterators/iteration_proxy.hpp \
|
||||
${SRCDIR}/detail/iterators/json_reverse_iterator.hpp \
|
||||
${SRCDIR}/detail/parsing/output_adapters.hpp \
|
||||
${SRCDIR}/detail/parsing/binary_reader.hpp \
|
||||
${SRCDIR}/detail/parsing/binary_writer.hpp \
|
||||
${SRCDIR}/detail/serializer.hpp \
|
||||
${SRCDIR}/detail/json_ref.hpp \
|
||||
${SRCDIR}/adl_serializer.hpp
|
||||
SRCDIR = ./src
|
||||
SRCS = $(SRCDIR)/json.hpp \
|
||||
$(SRCDIR)/json_fwd.hpp \
|
||||
$(SRCDIR)/detail/macro_scope.hpp \
|
||||
$(SRCDIR)/detail/macro_unscope.hpp \
|
||||
$(SRCDIR)/detail/meta.hpp \
|
||||
$(SRCDIR)/detail/exceptions.hpp \
|
||||
$(SRCDIR)/detail/value_t.hpp \
|
||||
$(SRCDIR)/detail/conversions/from_json.hpp \
|
||||
$(SRCDIR)/detail/conversions/to_json.hpp \
|
||||
$(SRCDIR)/detail/parsing/input_adapters.hpp \
|
||||
$(SRCDIR)/detail/parsing/lexer.hpp \
|
||||
$(SRCDIR)/detail/parsing/parser.hpp \
|
||||
$(SRCDIR)/detail/iterators/primitive_iterator.hpp \
|
||||
$(SRCDIR)/detail/iterators/internal_iterator.hpp \
|
||||
$(SRCDIR)/detail/iterators/iter_impl.hpp \
|
||||
$(SRCDIR)/detail/iterators/iteration_proxy.hpp \
|
||||
$(SRCDIR)/detail/iterators/json_reverse_iterator.hpp \
|
||||
$(SRCDIR)/detail/parsing/output_adapters.hpp \
|
||||
$(SRCDIR)/detail/parsing/binary_reader.hpp \
|
||||
$(SRCDIR)/detail/parsing/binary_writer.hpp \
|
||||
$(SRCDIR)/detail/serializer.hpp \
|
||||
$(SRCDIR)/detail/json_ref.hpp \
|
||||
$(SRCDIR)/adl_serializer.hpp
|
||||
|
||||
UNAME = $(shell uname)
|
||||
CXX=clang++
|
||||
|
||||
# main target
|
||||
all:
|
||||
|
@ -42,7 +45,6 @@ all:
|
|||
@echo "pedantic_gcc - run GCC with maximal warning flags"
|
||||
@echo "pretty - beautify code with Artistic Style"
|
||||
|
||||
|
||||
##########################################################################
|
||||
# unit tests
|
||||
##########################################################################
|
||||
|
@ -247,6 +249,7 @@ pretty:
|
|||
$(SRCS) test/src/*.cpp \
|
||||
benchmarks/src/benchmarks.cpp doc/examples/*.cpp
|
||||
|
||||
|
||||
##########################################################################
|
||||
# changelog
|
||||
##########################################################################
|
||||
|
|
19067
single_header/json.hpp
Normal file
19067
single_header/json.hpp
Normal file
File diff suppressed because it is too large
Load diff
|
@ -77,7 +77,7 @@ test-%: src/unit-%.o src/unit.o ../src/json.hpp thirdparty/catch/catch.hpp
|
|||
|
||||
TEST_PATTERN ?= "*"
|
||||
TEST_PREFIX = ""
|
||||
check: $(TESTCASES)
|
||||
check: $(OBJECTS) $(TESTCASES)
|
||||
@cd .. ; for testcase in $(TESTCASES); do echo "Executing $$testcase..."; $(TEST_PREFIX)test/$$testcase $(TEST_PATTERN) || exit 1; done
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue