Separate CMakeLists into separate projects for rjp and rjp++. Add install for pkg-config files
This commit is contained in:
parent
5b0570f546
commit
65dabe16d9
@ -1,4 +1,3 @@
|
|||||||
include(CMakeDependentOption)
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.0.2)
|
cmake_minimum_required(VERSION 3.0.2)
|
||||||
@ -7,31 +6,27 @@ set(rjp_VERSION_MAJOR 0)
|
|||||||
set(rjp_VERSION_MINOR 9)
|
set(rjp_VERSION_MINOR 9)
|
||||||
set(rjp_VERSION_REVISION 0)
|
set(rjp_VERSION_REVISION 0)
|
||||||
set(INCLUDE_PATH ${CMAKE_SOURCE_DIR}/include)
|
set(INCLUDE_PATH ${CMAKE_SOURCE_DIR}/include)
|
||||||
set(INCLUDE_PATH_CPP ${CMAKE_SOURCE_DIR}/rjp++/include)
|
include_directories("${INCLUDE_PATH}")
|
||||||
|
|
||||||
configure_file(
|
configure_file(
|
||||||
"${INCLUDE_PATH}/config.h.in"
|
"${INCLUDE_PATH}/config.h.in"
|
||||||
"${INCLUDE_PATH}/config.h"
|
"${INCLUDE_PATH}/config.h"
|
||||||
)
|
)
|
||||||
include_directories("${INCLUDE_PATH}")
|
configure_file(
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/pc/rjp.pc.cmake.in"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/pc/rjp.pc"
|
||||||
|
@ONLY
|
||||||
|
)
|
||||||
option(ENABLE_DIAGNOSTICS "Print diagnostic messages when parsing json to help identify issues" ON)
|
option(ENABLE_DIAGNOSTICS "Print diagnostic messages when parsing json to help identify issues" ON)
|
||||||
option(ENABLE_SHARED "Build shared library" OFF)
|
option(ENABLE_SHARED "Build shared library" OFF)
|
||||||
option(ENABLE_C++ "Build C++ wrapper library" ON)
|
option(ENABLE_C++ "Build C++ wrapper library" ON)
|
||||||
|
|
||||||
set(SOURCE_LIST "src/rjp_ordered_object.c" "src/rjp_unordered_object.c" "src/input.c" "src/output.c" "src/rjp_array.c" "src/rjp.c" "src/rjp_object.c" "src/rjp_string.c" "src/tree.c")
|
set(SOURCE_LIST "src/rjp_ordered_object.c" "src/rjp_unordered_object.c" "src/input.c" "src/output.c" "src/rjp_array.c" "src/rjp.c" "src/rjp_object.c" "src/rjp_string.c" "src/tree.c")
|
||||||
set(SOURCE_LIST_CPP "rjp++/src/allocator.cpp" "rjp++/src/array.cpp" "rjp++/src/integral.cpp" "rjp++/src/object.cpp" "rjp++/src/rjp.cpp" "rjp++/src/string.cpp" "rjp++/src/value.cpp")
|
|
||||||
if(ENABLE_SHARED)
|
if(ENABLE_SHARED)
|
||||||
add_library(rjp SHARED ${SOURCE_LIST})
|
add_library(rjp SHARED ${SOURCE_LIST})
|
||||||
if(ENABLE_C++)
|
|
||||||
add_library(rjp++ SHARED ${SOURCE_LIST_CPP})
|
|
||||||
set_target_properties(rjp++ PROPERTIES SOVERSION "${rjp_VERSION_MAJOR}.${rjp_VERSION_MINOR}.${rjp_VERSION_REVISION}")
|
|
||||||
endif()
|
|
||||||
set_target_properties(rjp PROPERTIES SOVERSION "${rjp_VERSION_MAJOR}.${rjp_VERSION_MINOR}.${rjp_VERSION_REVISION}")
|
set_target_properties(rjp PROPERTIES SOVERSION "${rjp_VERSION_MAJOR}.${rjp_VERSION_MINOR}.${rjp_VERSION_REVISION}")
|
||||||
else()
|
else()
|
||||||
add_library(rjp STATIC ${SOURCE_LIST})
|
add_library(rjp STATIC ${SOURCE_LIST})
|
||||||
if(ENABLE_C++)
|
|
||||||
add_library(rjp++ STATIC ${SOURCE_LIST_CPP})
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set_target_properties(rjp PROPERTIES PUBLIC_HEADER ${INCLUDE_PATH}/rjp.h)
|
set_target_properties(rjp PROPERTIES PUBLIC_HEADER ${INCLUDE_PATH}/rjp.h)
|
||||||
@ -45,17 +40,11 @@ install(TARGETS rjp
|
|||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
)
|
)
|
||||||
|
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/pc/rjp.pc"
|
||||||
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
|
||||||
|
)
|
||||||
if(ENABLE_C++)
|
if(ENABLE_C++)
|
||||||
target_include_directories(rjp++ PRIVATE ${INCLUDE_PATH_CPP} ${INCLUDE_PATH})
|
add_subdirectory(rjp++)
|
||||||
set_target_properties(rjp++ PROPERTIES PUBLIC_HEADER ${INCLUDE_PATH_CPP}/rjp.hpp)
|
|
||||||
set_target_properties(rjp++ PROPERTIES COMPILE_FLAGS -std=c++17)
|
|
||||||
target_compile_options(rjp++ PRIVATE -Wall -Wextra -pedantic)
|
|
||||||
target_link_libraries(rjp++ rjp -lrexy)
|
|
||||||
install(TARGETS rjp++
|
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
||||||
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
46
rjp++/CMakeLists.txt
Normal file
46
rjp++/CMakeLists.txt
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 3.0.2)
|
||||||
|
project(rjp++)
|
||||||
|
set(rjp++_VERSION_MAJOR ${rjp_VERSION_MAJOR})
|
||||||
|
set(rjp++_VERSION_MINOR ${rjp_VERSION_MINOR})
|
||||||
|
set(rjp++_VERSION_REVISION ${rjp_VERSION_REVISION})
|
||||||
|
set(INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||||
|
include_directories("${INCLUDE_PATH}")
|
||||||
|
|
||||||
|
option(ENABLE_SHARED "Build shared library" OFF)
|
||||||
|
|
||||||
|
set(SOURCE_LIST "src/allocator.cpp" "src/array.cpp" "src/integral.cpp" "src/object.cpp" "src/rjp.cpp" "src/string.cpp" "src/string_val.cpp" "src/value.cpp")
|
||||||
|
if(ENABLE_SHARED)
|
||||||
|
add_library(rjp++ SHARED ${SOURCE_LIST})
|
||||||
|
set_target_properties(rjp++ PROPERTIES SOVERSION "${rjp_VERSION_MAJOR}.${rjp_VERSION_MINOR}.${rjp_VERSION_REVISION}")
|
||||||
|
else()
|
||||||
|
add_library(rjp++ STATIC ${SOURCE_LIST})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/pc/rjp++.pc.cmake.in"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/pc/rjp++.pc"
|
||||||
|
@ONLY
|
||||||
|
)
|
||||||
|
set_target_properties(rjp++ PROPERTIES PUBLIC_HEADER ${INCLUDE_PATH}/rjp.hpp)
|
||||||
|
set(CPP_HEADERS ${INCLUDE_PATH}/array.hpp ${INCLUDE_PATH}/integral.hpp ${INCLUDE_PATH}/iterator.hpp
|
||||||
|
${INCLUDE_PATH}/member.hpp ${INCLUDE_PATH}/object.hpp ${INCLUDE_PATH}/rjp_internal.hpp
|
||||||
|
${INCLUDE_PATH}/string.hpp ${INCLUDE_PATH}/string_val.hpp ${INCLUDE_PATH}/value.hpp)
|
||||||
|
|
||||||
|
set_target_properties(rjp++ PROPERTIES COMPILE_FLAGS -std=c++17)
|
||||||
|
target_compile_options(rjp++ PRIVATE -Wall -Wextra -pedantic)
|
||||||
|
target_link_libraries(rjp++ rjp -lrexy)
|
||||||
|
|
||||||
|
install(TARGETS rjp++
|
||||||
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
|
)
|
||||||
|
install(FILES ${CPP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rjp++)
|
||||||
|
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/pc/rjp++.pc"
|
||||||
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
add_custom_target(uninstall_rjp++ cat install_manifest.txt | xargs rm)
|
||||||
Loading…
x
Reference in New Issue
Block a user