Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .gitmodules

This file was deleted.

79 changes: 31 additions & 48 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
cmake_minimum_required(VERSION 3.5...4.0)

SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules)

Expand All @@ -20,8 +20,6 @@ SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
option(RAPIDJSON_BUILD_DOC "Build rapidjson documentation." ON)
option(RAPIDJSON_BUILD_EXAMPLES "Build rapidjson examples." ON)
option(RAPIDJSON_BUILD_TESTS "Build rapidjson perftests and unittests." ON)
option(RAPIDJSON_BUILD_THIRDPARTY_GTEST
"Use gtest installation in `thirdparty/gtest` by default if available" OFF)

option(RAPIDJSON_BUILD_CXX11 "Build rapidjson with C++11" ON)
option(RAPIDJSON_BUILD_CXX17 "Build rapidjson with C++17" OFF)
Expand Down Expand Up @@ -144,9 +142,11 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "XL")
endif()

#add extra search paths for libraries and includes
SET(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "The directory the headers are installed in")
SET(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE STRING "Directory where lib will install")
SET(DOC_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share/doc/${PROJECT_NAME}" CACHE PATH "Path to the documentation")
include(GNUInstallDirs)

SET(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}" CACHE PATH "The directory the headers are installed in")
SET(LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}" CACHE STRING "Directory where lib will install")
SET(DOC_INSTALL_DIR "${CMAKE_INSTALL_DOCDIR}" CACHE PATH "Path to the documentation")

IF(UNIX OR CYGWIN)
SET(_CMAKE_INSTALL_DIR "${LIB_INSTALL_DIR}/cmake/${PROJECT_NAME}")
Expand All @@ -155,8 +155,6 @@ ELSEIF(WIN32)
ENDIF()
SET(CMAKE_INSTALL_DIR "${_CMAKE_INSTALL_DIR}" CACHE PATH "The directory cmake files are installed in")

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)

if(RAPIDJSON_BUILD_DOC)
add_subdirectory(doc)
endif()
Expand All @@ -170,6 +168,7 @@ if(RAPIDJSON_BUILD_EXAMPLES)
endif()

if(RAPIDJSON_BUILD_TESTS)
enable_testing()
if(MSVC11)
# required for VS2012 due to missing support for variadic templates
add_definitions(-D_VARIADIC_MAX=10)
Expand All @@ -195,7 +194,10 @@ install(FILES readme.md
# Add an interface target to export it
add_library(RapidJSON INTERFACE)

target_include_directories(RapidJSON INTERFACE $<INSTALL_INTERFACE:include>)
target_include_directories(RapidJSON INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}>
)

install(DIRECTORY include/rapidjson
DESTINATION "${INCLUDE_INSTALL_DIR}"
Expand All @@ -214,44 +216,25 @@ install(DIRECTORY example/
# ===============================

################################################################################
# Export package for use from the build tree
EXPORT( PACKAGE ${PROJECT_NAME} )

# Create the RapidJSONConfig.cmake file for other cmake projects.
# ... for the build tree
SET( CONFIG_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
SET( CONFIG_DIR ${CMAKE_CURRENT_BINARY_DIR})
SET( ${PROJECT_NAME}_INCLUDE_DIR "\${${PROJECT_NAME}_SOURCE_DIR}/include" )

INCLUDE(CMakePackageConfigHelpers)
CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}Config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake @ONLY )
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}ConfigVersion.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake @ONLY)

# ... for the install tree
SET( CMAKECONFIG_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/${PROJECT_NAME} )
FILE( RELATIVE_PATH REL_INCLUDE_DIR
"${CMAKECONFIG_INSTALL_DIR}"
"${CMAKE_INSTALL_PREFIX}/include" )

SET( ${PROJECT_NAME}_INCLUDE_DIR "\${${PROJECT_NAME}_CMAKE_DIR}/${REL_INCLUDE_DIR}" )
SET( CONFIG_SOURCE_DIR )
SET( CONFIG_DIR )
CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}Config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}Config.cmake @ONLY )

INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}Config.cmake"
DESTINATION ${CMAKECONFIG_INSTALL_DIR} )
include(CMakePackageConfigHelpers)
write_basic_package_version_file(${PROJECT_NAME}ConfigVersion.cmake
COMPATIBILITY AnyNewerVersion
)
configure_package_config_file(
${PROJECT_NAME}Config.cmake.in
${PROJECT_NAME}Config.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_DIR}
)

# Install files
IF(CMAKE_INSTALL_DIR)
INSTALL(FILES
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
DESTINATION "${CMAKE_INSTALL_DIR}"
COMPONENT dev)

INSTALL(TARGETS RapidJSON EXPORT RapidJSON-targets)
INSTALL(EXPORT RapidJSON-targets DESTINATION ${CMAKE_INSTALL_DIR})
ENDIF()
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
DESTINATION ${CMAKE_INSTALL_DIR}
COMPONENT dev
)
install(TARGETS RapidJSON EXPORT RapidJSON-targets)
export(TARGETS RapidJSON
FILE RapidJSON-targets.cmake
)
install(EXPORT RapidJSON-targets DESTINATION ${CMAKE_INSTALL_DIR})
30 changes: 0 additions & 30 deletions CMakeModules/FindGTestSrc.cmake

This file was deleted.

4 changes: 2 additions & 2 deletions RapidJSONConfig.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ include ("${CMAKE_CURRENT_LIST_DIR}/RapidJSON-targets.cmake")

################################################################################
# RapidJSON source dir
set( RapidJSON_SOURCE_DIR "@CONFIG_SOURCE_DIR@")
set( RapidJSON_SOURCE_DIR "RapidJSON_SOURCE_DIR-NOTFOUND")

################################################################################
# RapidJSON build dir
set( RapidJSON_DIR "@CONFIG_DIR@")
set( RapidJSON_DIR "RapidJSON_DIR-NOTFOUND")

################################################################################
# Compute paths
Expand Down
10 changes: 0 additions & 10 deletions RapidJSONConfigVersion.cmake.in

This file was deleted.

2 changes: 1 addition & 1 deletion example/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 2.8)
cmake_minimum_required(VERSION 2.8...4.0)

if(POLICY CMP0054)
cmake_policy(SET CMP0054 NEW)
Expand Down
40 changes: 23 additions & 17 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,20 +1,26 @@
find_package(GTestSrc)
cmake_minimum_required(VERSION 3.11...4.0)

IF(GTESTSRC_FOUND)
enable_testing()
include(FetchContent)

if (WIN32 AND (NOT CYGWIN) AND (NOT MINGW))
set(gtest_disable_pthreads ON)
set(gtest_force_shared_crt ON)
endif()
set(BUILD_GMOCK OFF)
set(INSTALL_GTEST OFF)
if (WIN32 AND (NOT CYGWIN) AND (NOT MINGW))
set(gtest_disable_pthreads ON)
set(gtest_force_shared_crt ON)
endif()
set(fetchcontent_extra_args)
if(CMAKE_VERSION GREATER_EQUAL 3.24)
list(APPEND fetchcontent_extra_args
FIND_PACKAGE_ARGS CONFIG
)
endif()
FetchContent_Declare(GTest
GIT_REPOSITORY https://github.com/google/googletest
GIT_TAG v1.17.0
${fetchcontent_extra_args}
)
FetchContent_MakeAvailable(GTest)

add_subdirectory(${GTEST_SOURCE_DIR} ${CMAKE_BINARY_DIR}/googletest)
include_directories(SYSTEM ${GTEST_INCLUDE_DIR})

set(TEST_LIBRARIES gtest gtest_main)

add_custom_target(tests ALL)
add_subdirectory(perftest)
add_subdirectory(unittest)

ENDIF(GTESTSRC_FOUND)
add_custom_target(tests ALL)
add_subdirectory(perftest)
add_subdirectory(unittest)
2 changes: 1 addition & 1 deletion test/perftest/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ set(PERFTEST_SOURCES
schematest.cpp)

add_executable(perftest ${PERFTEST_SOURCES})
target_link_libraries(perftest ${TEST_LIBRARIES})
target_link_libraries(perftest PRIVATE RapidJSON GTest::gtest GTest::gtest_main)

add_dependencies(tests perftest)

Expand Down
2 changes: 1 addition & 1 deletion test/perftest/perftest.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
#pragma GCC diagnostic ignored "-Weffc++"
#endif

#include "gtest/gtest.h"
#include <gtest/gtest.h>

#if defined(__clang__) || defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
#pragma GCC diagnostic pop
Expand Down
3 changes: 2 additions & 1 deletion test/unittest/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,10 @@ endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DRAPIDJSON_HAS_STDSTRING=1")

add_library(namespacetest STATIC namespacetest.cpp)
target_link_libraries(namespacetest PUBLIC RapidJSON GTest::gtest GTest::gtest_main)

add_executable(unittest ${UNITTEST_SOURCES})
target_link_libraries(unittest ${TEST_LIBRARIES} namespacetest)
target_link_libraries(unittest PRIVATE namespacetest)

add_dependencies(tests unittest)

Expand Down
2 changes: 1 addition & 1 deletion test/unittest/unittest.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
#pragma GCC diagnostic ignored "-Weffc++"
#endif

#include "gtest/gtest.h"
#include <gtest/gtest.h>
#include <stdexcept>

#if defined(__clang__) || defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
Expand Down
1 change: 0 additions & 1 deletion thirdparty/gtest
Submodule gtest deleted from ba96d0