Skip to content

Commit

Permalink
Reverting everything
Browse files Browse the repository at this point in the history
  • Loading branch information
mhekkel committed Mar 9, 2024
1 parent 97855a2 commit 6356d46
Show file tree
Hide file tree
Showing 11 changed files with 794 additions and 449 deletions.
104 changes: 65 additions & 39 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,25 +25,19 @@
cmake_minimum_required(VERSION 3.16)

# set the project name
project(mcfp VERSION 1.3.0 LANGUAGES CXX)

list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
project(libmcfp VERSION 1.2.4 LANGUAGES CXX)

include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
include(CTest)
include(Dart)

set(CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD 17 CACHE STRING "The minimum version of C++ required for this library")
set(CMAKE_CXX_STANDARD_REQUIRED ON)

option(BUILD_DOCUMENTATION "Build the documentation" OFF)
option(ENABLE_TESTING "Build the unit test applications" OFF)

if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
if("${CMAKE_CXX_COMPILER_VERSION}" LESS 9.4)
message(FATAL_ERROR "Your GNU g++ is too old, need at least 9.4")
endif()

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers")
elseif(MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
Expand All @@ -70,46 +64,78 @@ if(MSVC)
add_definitions(-DNOMINMAX)
endif()

add_library(mcfp INTERFACE)
add_library(mcfp::mcfp ALIAS mcfp)
add_library(libmcfp INTERFACE)
add_library(libmcfp::libmcfp ALIAS libmcfp)

target_compile_features(mcfp INTERFACE cxx_std_20)
target_include_directories(libmcfp INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
)

# adding header sources just helps IDEs
target_sources(mcfp PUBLIC
FILE_SET mcfp_headers TYPE HEADERS
BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include
FILES
include/mcfp/detail/charconv.hpp
include/mcfp/detail/options.hpp
include/mcfp/error.hpp
include/mcfp/mcfp.hpp
include/mcfp/text.hpp
include/mcfp/utilities.hpp
target_sources(libmcfp INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>$<INSTALL_INTERFACE:include>/mcfp/mcfp.hpp
)

set_target_properties(libmcfp PROPERTIES PUBLIC_HEADER include/mcfp/mcfp.hpp)

# installation
install(TARGETS mcfp
EXPORT mcfp
FILE_SET mcfp_headers
DESTINATION include/)
set(version_config "${CMAKE_CURRENT_BINARY_DIR}/libmcfpConfigVersion.cmake")

install(EXPORT mcfp
NAMESPACE mcfp::
DESTINATION lib/cmake/mcfp
FILE "mcfp-targets.cmake")
set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR})

configure_file(${PROJECT_SOURCE_DIR}/cmake/mcfp-config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/mcfp-config.cmake @ONLY)
write_basic_package_version_file("${version_config}"
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion)

install(FILES "${CMAKE_CURRENT_BINARY_DIR}/mcfp-config.cmake"
DESTINATION "lib/cmake/mcfp")
install(TARGETS libmcfp
EXPORT libmcfpConfig
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})

if(BUILD_TESTING)
add_subdirectory(test)
endif()
install(
DIRECTORY include/mcfp
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
COMPONENT Devel
)

export(TARGETS libmcfp NAMESPACE libmcfp:: FILE libmcfpTargets.cmake)

if(BUILD_DOCUMENTATION)
add_subdirectory(docs)
if(WIN32 AND NOT CYGWIN)
set(CONFIG_LOC CMake)
else()
set(CONFIG_LOC "${CMAKE_INSTALL_LIBDIR}/cmake/libmcfp")
endif()

configure_package_config_file(
${PROJECT_SOURCE_DIR}/cmake/libmcfpConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/libmcfpConfig.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libmcfp
PATH_VARS INCLUDE_INSTALL_DIR
)

install(EXPORT libmcfpConfig
FILE libmcfpTargets.cmake
NAMESPACE libmcfp::
DESTINATION ${CONFIG_LOC})

install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/libmcfpConfig.cmake "${version_config}"
DESTINATION ${CONFIG_LOC})

if(ENABLE_TESTING)
enable_testing()

find_package(Boost REQUIRED)

add_executable(libmcfp-unit-test ${PROJECT_SOURCE_DIR}/test/unit-test.cpp)

target_link_libraries(libmcfp-unit-test libmcfp::libmcfp Boost::boost)

if(MSVC)
# Specify unwind semantics so that MSVC knowns how to handle exceptions
target_compile_options(libmcfp-unit-test PRIVATE /EHsc)
endif()

add_test(NAME libmcfp-unit-test
COMMAND $<TARGET_FILE:libmcfp-unit-test> -- ${PROJECT_SOURCE_DIR}/test)
endif()
4 changes: 1 addition & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
[![github CI](https://github.com/mhekkel/libmcfp/actions/workflows/cmake-multi-platform.yml/badge.svg)](https://github.com/mhekkel/libmcfp/actions)
[![github CI](https://github.com/mhekkel/libmcfp/actions/workflows/build-documentation.yml/badge.svg)](https://github.com/mhekkel/libmcfp/actions)

# libmcfp

A library for parsing command line arguments and configuration files and making them available throughout a program.
Expand Down Expand Up @@ -132,3 +129,4 @@ cmake ..
cmake --build .
cmake --install .
```

7 changes: 0 additions & 7 deletions changelog
Original file line number Diff line number Diff line change
@@ -1,10 +1,3 @@
Version 1.3.0
- Config file syntax improvements (better conforming to ini file syntax)
- Better cmake file

Version 1.2.5
- Replace test for _MSC_VER with more generic _WIN32

Version 1.2.4
- Simpler get (added a version without template arguments)

Expand Down
5 changes: 5 additions & 0 deletions cmake/libmcfpConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
@PACKAGE_INIT@

INCLUDE("${CMAKE_CURRENT_LIST_DIR}/libmcfpTargets.cmake")

check_required_components(libmcfp)
5 changes: 0 additions & 5 deletions cmake/mcfp-config.cmake.in

This file was deleted.

4 changes: 2 additions & 2 deletions examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ set(CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD 17 CACHE STRING "The minimum version of C++ required for this library")
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(mcfp REQUIRED)
find_package(libmcfp REQUIRED)

add_executable(example example.cpp)
target_link_libraries(example mcfp::mcfp)
target_link_libraries(example libmcfp::libmcfp)
Loading

0 comments on commit 6356d46

Please sign in to comment.