|
1 | | -cmake_minimum_required(VERSION 3.18) |
| 1 | +cmake_minimum_required(VERSION 3.26) |
2 | 2 |
|
3 | | -project(hello_cpp VERSION 0.1.0 LANGUAGES CXX) |
| 3 | +function(split_version str MAJOR MINOR PATCH) |
| 4 | + # Parse the string directly into the names provided by the arguments |
| 5 | + string(REGEX MATCH "([0-9]+)\\.([0-9]+)\\.([0-9]+)" _ ${str}) |
| 6 | + |
| 7 | + set(${MAJOR} ${CMAKE_MATCH_1}) |
| 8 | + set(${MINOR} ${CMAKE_MATCH_2}) |
| 9 | + set(${PATCH} ${CMAKE_MATCH_3}) |
| 10 | + |
| 11 | + return(PROPAGATE ${MAJOR} ${MINOR} ${PATCH}) |
| 12 | +endfunction() |
| 13 | + |
| 14 | +if(DEFINED SKBUILD_PROJECT_VERSION) |
| 15 | + set(HELLO_CPP_VERSION ${SKBUILD_PROJECT_VERSION}) |
| 16 | +else() |
| 17 | + set(HELLO_CPP_VERSION "0.9.0") |
| 18 | +endif() |
| 19 | + |
| 20 | +split_version(${HELLO_CPP_VERSION} |
| 21 | + HELLO_CPP_VERSION_MAJOR |
| 22 | + HELLO_CPP_VERSION_MINOR |
| 23 | + HELLO_CPP_VERSION_PATCH) |
| 24 | + |
| 25 | +project(hello_cpp VERSION ${HELLO_CPP_VERSION} LANGUAGES CXX) |
| 26 | + |
| 27 | +message(STATUS "HELLO_CPP_VERSION_MAJOR: ${HELLO_CPP_VERSION_MAJOR}") |
| 28 | +message(STATUS "HELLO_CPP_VERSION_MINOR: ${HELLO_CPP_VERSION_MINOR}") |
| 29 | +message(STATUS "HELLO_CPP_VERSION_PATCH: ${HELLO_CPP_VERSION_PATCH}") |
4 | 30 |
|
5 | 31 | set(CMAKE_CXX_STANDARD 17) |
6 | 32 | set(CMAKE_CXX_STANDARD_REQUIRED ON) |
7 | 33 |
|
8 | 34 | find_package(pybind11 CONFIG REQUIRED) |
9 | 35 |
|
| 36 | + |
10 | 37 | pybind11_add_module(hello_cpp src/hello.cpp) |
| 38 | +target_compile_definitions(hello_cpp PUBLIC HELLO_CPP_VERSION="${HELLO_CPP_VERSION}") |
11 | 39 |
|
12 | 40 | install( |
13 | 41 | TARGETS hello_cpp |
|
0 commit comments