Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add cmake files to build and install header only library #85

Merged
merged 2 commits into from
Feb 2, 2021
Merged
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
54 changes: 54 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
cmake_minimum_required(VERSION 3.13...3.19)

project(tomlplusplus LANGUAGES CXX VERSION 2.3.1)

# Determine if this project is built as a subproject (using
# add_subdirectory) or if it is the master project.
set(MASTER_PROJECT OFF)
if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
set(MASTER_PROJECT ON)
message(STATUS "CMake version: ${CMAKE_VERSION}")
endif()


add_library(tomlplusplus INTERFACE)
add_library(tomlplusplus::tomlplusplus ALIAS tomlplusplus)
target_compile_features(tomlplusplus INTERFACE cxx_std_17)
target_include_directories(tomlplusplus INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
)


option(TOMLPP_BUILD_EXAMPLES "Build examples." ${MASTER_PROJECT})
if(TOMLPP_BUILD_EXAMPLES)
add_subdirectory(examples)
endif()


option(TOMLPP_INSTALL "Generate the install target" ${MASTER_PROJECT})
if(TOMLPP_INSTALL)
include(CMakePackageConfigHelpers)
include(GNUInstallDirs)
install(TARGETS tomlplusplus EXPORT ${PROJECT_NAME}Targets)

install(DIRECTORY include/toml++ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})

write_basic_package_version_file(
${PROJECT_NAME}ConfigVersion.cmake
COMPATIBILITY SameMajorVersion
)

install(
FILES cmake/tomlplusplusConfig.cmake # ---------->
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
)

install(
EXPORT ${PROJECT_NAME}Targets
NAMESPACE ${PROJECT_NAME}::
FILE ${PROJECT_NAME}Targets.cmake # <----------
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
)
endif()
1 change: 1 addition & 0 deletions cmake/tomlplusplusConfig.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
include(${CMAKE_CURRENT_LIST_DIR}/tomlplusplusTargets.cmake)
15 changes: 15 additions & 0 deletions examples/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
cmake_minimum_required(VERSION 3.13...3.19)

project(Examples LANGUAGES CXX)

if(NOT TARGET tomlplusplus::tomlplusplus)
find_package(tomlplusplus REQUIRED)
endif()

add_executable(toml_to_json_transcoder toml_to_json_transcoder.cpp)
target_link_libraries(toml_to_json_transcoder PRIVATE tomlplusplus::tomlplusplus)

enable_testing()
add_test(NAME toml_to_json_transcoder
COMMAND toml_to_json_transcoder ${CMAKE_CURRENT_LIST_DIR}/example.toml
)