mcl: Add install instructions behave well with this

This commit is contained in:
Merry 2022-04-19 12:03:03 +01:00
parent 8b12832172
commit 215182d9a7
4 changed files with 42 additions and 4 deletions

View File

@ -1,5 +1,7 @@
cmake_minimum_required(VERSION 3.12 FATAL_ERROR) cmake_minimum_required(VERSION 3.12 FATAL_ERROR)
project(mcl CXX) include(GNUInstallDirs)
project(mcl LANGUAGES CXX VERSION 0.1.2)
# Project options # Project options
option(MCL_WARNINGS_AS_ERRORS "Warnings as errors" ON) option(MCL_WARNINGS_AS_ERRORS "Warnings as errors" ON)
@ -96,3 +98,29 @@ add_subdirectory(src)
if (TARGET Catch2::Catch2) if (TARGET Catch2::Catch2)
add_subdirectory(tests) add_subdirectory(tests)
endif() endif()
# Install instructions
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
install(TARGETS mcl EXPORT mclTargets)
install(EXPORT mclTargets
NAMESPACE merry::
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/mcl"
)
configure_package_config_file(CMakeModules/mclConfig.cmake.in
mclConfig.cmake
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/mcl"
)
write_basic_package_version_file(mclConfigVersion.cmake
COMPATIBILITY SameMajorVersion
)
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/mclConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/mclConfigVersion.cmake"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/mcl"
)
install(DIRECTORY include/ TYPE INCLUDE FILES_MATCHING PATTERN "*.hpp")

View File

@ -0,0 +1,5 @@
@PACKAGE_INIT@
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
check_required_components(@PROJECT_NAME@)

View File

@ -4,7 +4,7 @@
#pragma once #pragma once
#include "mp/stdint.hpp" #include "mcl/stdint.hpp"
namespace mcl { namespace mcl {

View File

@ -56,9 +56,14 @@ add_library(mcl
../include/mcl/type_traits/is_instance_of_template.hpp ../include/mcl/type_traits/is_instance_of_template.hpp
assert.cpp assert.cpp
) )
target_include_directories(mcl PUBLIC ../include/) target_include_directories(mcl
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
target_compile_options(mcl PRIVATE ${MCL_CXX_FLAGS}) target_compile_options(mcl PRIVATE ${MCL_CXX_FLAGS})
target_link_libraries(mcl PUBLIC fmt::fmt) target_link_libraries(mcl PUBLIC $<BUILD_INTERFACE:fmt::fmt>)
add_library(merry::mcl ALIAS mcl)
include(CreateTargetDirectoryGroups) include(CreateTargetDirectoryGroups)
create_target_directory_groups(mcl) create_target_directory_groups(mcl)