Skip to content

Commit 67fe41f

Browse files
authored
Merge pull request #40 from lordpaijo/master
fix: I hope this works on Windows.
2 parents f07f4ac + ca4390d commit 67fe41f

2 files changed

Lines changed: 56 additions & 28 deletions

File tree

CMakeLists.txt

Lines changed: 53 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,45 @@
11
cmake_minimum_required(VERSION 3.15)
2+
3+
# ======================
4+
# Version detection
5+
# ======================
26
find_package(Git QUIET)
7+
8+
set(IMETH_VERSION "1.0.0")
9+
310
if(GIT_FOUND)
411
execute_process(
5-
COMMAND ${GIT_EXECUTABLE} describe --tags --abbrev=0
6-
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
7-
OUTPUT_VARIABLE GIT_VERSION
8-
OUTPUT_STRIP_TRAILING_WHITESPACE
9-
ERROR_QUIET
12+
COMMAND ${GIT_EXECUTABLE} describe --tags --abbrev=0
13+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
14+
OUTPUT_VARIABLE GIT_VERSION
15+
OUTPUT_STRIP_TRAILING_WHITESPACE
16+
ERROR_QUIET
1017
)
1118
if(GIT_VERSION)
12-
string(REGEX REPLACE "^v" "" GIT_VERSION ${GIT_VERSION})
13-
project(imeth LANGUAGES CXX VERSION ${GIT_VERSION})
14-
else()
15-
project(imeth LANGUAGES CXX VERSION 1.0.0)
19+
string(REGEX REPLACE "^v" "" IMETH_VERSION "${GIT_VERSION}")
1620
endif()
17-
else()
18-
project(imeth LANGUAGES CXX VERSION 1.0.0)
1921
endif()
20-
project(imeth LANGUAGES CXX VERSION ${PROJECT_VERSION})
2122

23+
project(imeth VERSION ${IMETH_VERSION} LANGUAGES CXX)
24+
25+
# ======================
26+
# Build settings
27+
# ======================
2228
set(CMAKE_CXX_STANDARD 20)
2329
set(CMAKE_CXX_STANDARD_REQUIRED ON)
2430
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
2531

2632
# ======================
27-
# Main library
33+
# Library
2834
# ======================
29-
file(GLOB_RECURSE IMETH_SOURCES
30-
CONFIGURE_DEPENDS
31-
"src/*.cpp"
35+
file(GLOB_RECURSE IMETH_SOURCES CONFIGURE_DEPENDS
36+
src/*.cpp
3237
)
33-
add_library(imeth STATIC ${IMETH_SOURCES}
34-
include/imeth/operation/combinatoric.hpp
35-
src/operation/combinatoric.cpp)
3638

37-
# Proper include handling (for both build & install)
39+
add_library(imeth STATIC ${IMETH_SOURCES})
40+
41+
add_library(imeth::imeth ALIAS imeth)
42+
3843
target_include_directories(imeth
3944
PUBLIC
4045
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
@@ -45,31 +50,51 @@ target_include_directories(imeth
4550
# Installation
4651
# ======================
4752
include(GNUInstallDirs)
53+
include(CMakePackageConfigHelpers)
4854

4955
install(
5056
TARGETS imeth
5157
EXPORT imethTargets
5258
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
59+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
60+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
5361
)
5462

5563
install(
56-
DIRECTORY include/imeth/
57-
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/imeth
64+
DIRECTORY include/
65+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
5866
)
5967

6068
install(
6169
EXPORT imethTargets
62-
FILE imethConfig.cmake
6370
NAMESPACE imeth::
6471
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/imeth
6572
)
6673

6774
# ======================
68-
# Test executable
75+
# Config files
6976
# ======================
70-
add_executable(imeth_test tests/main.cpp)
77+
configure_package_config_file(
78+
${CMAKE_CURRENT_SOURCE_DIR}/cmake/imethConfig.cmake.in
79+
${CMAKE_CURRENT_BINARY_DIR}/imethConfig.cmake
80+
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/imeth
81+
)
7182

72-
target_link_libraries(imeth_test PRIVATE imeth)
83+
write_basic_package_version_file(
84+
${CMAKE_CURRENT_BINARY_DIR}/imethConfigVersion.cmake
85+
VERSION ${PROJECT_VERSION}
86+
COMPATIBILITY AnyNewerVersion
87+
)
7388

74-
# Add include dir for test only
75-
target_include_directories(imeth_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
89+
install(
90+
FILES
91+
${CMAKE_CURRENT_BINARY_DIR}/imethConfig.cmake
92+
${CMAKE_CURRENT_BINARY_DIR}/imethConfigVersion.cmake
93+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/imeth
94+
)
95+
96+
# ======================
97+
# Tests (build-only)
98+
# ======================
99+
add_executable(imeth_test tests/main.cpp)
100+
target_link_libraries(imeth_test PRIVATE imeth)

cmake/imethConfig.cmake.in

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
@PACKAGE_INIT@
2+
3+
include("${CMAKE_CURRENT_LIST_DIR}/imethTargets.cmake")

0 commit comments

Comments
 (0)