Skip to content

Commit 6286123

Browse files
committed
make install looks working
1 parent 811479c commit 6286123

2 files changed

Lines changed: 59 additions & 7 deletions

File tree

CMakeLists.txt

Lines changed: 55 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
1-
project(matplotlibcpp17)
21
cmake_minimum_required(VERSION 3.12)
32

3+
project(
4+
"matplotlibcpp17"
5+
VERSION 0.0.0
6+
DESCRIPTION "A C++ header-only plotting library based on pybind11 and matplotlib, featuring more flexibility than matplotlibcpp"
7+
HOMEPAGE_URL "https://soblin.github.io/matplotlibcpp17/"
8+
)
9+
410
find_package(Python3 COMPONENTS Interpreter Development NumPy)
511
find_package(pybind11 REQUIRED)
612

7-
if(NOT DEFINED ADD_DEMO)
8-
set(ADD_DEMO ON)
9-
endif()
13+
set(matplotlibcpp17_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/include")
1014

15+
# gallery
1116
if(NOT DEFINED USE_GUI)
1217
set(USE_GUI 0)
1318
endif()
14-
15-
set(matplotlibcpp17_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/include")
19+
if(NOT DEFINED ADD_DEMO)
20+
set(ADD_DEMO ON)
21+
endif()
1622

1723
function(add_demo name path)
1824
add_executable(${name} ${path})
@@ -39,10 +45,52 @@ if(${ADD_DEMO})
3945
add_subdirectory(gallery/mplot3d)
4046
endif()
4147

48+
49+
# test
4250
if(NOT DEFINED DO_TEST)
4351
set(DO_TEST ON)
4452
endif()
45-
4653
if(${DO_TEST})
4754
add_subdirectory(tests)
4855
endif()
56+
57+
58+
# install
59+
## https://dominikberner.ch/cmake-interface-lib/
60+
include(GNUInstallDirs)
61+
add_library(${PROJECT_NAME} INTERFACE)
62+
target_include_directories(${PROJECT_NAME}
63+
INTERFACE
64+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
65+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
66+
)
67+
target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_17)
68+
install(TARGETS ${PROJECT_NAME}
69+
EXPORT ${PROJECT_NAME}_Targets
70+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
71+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
72+
)
73+
include(CMakePackageConfigHelpers)
74+
write_basic_package_version_file("${PROJECT_NAME}ConfigVersion.cmake"
75+
VERSION ${PROJECT_VERSION}
76+
COMPATIBILITY SameMajorVersion
77+
)
78+
configure_package_config_file(
79+
"${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake.in"
80+
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
81+
INSTALL_DESTINATION
82+
${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/cmake
83+
)
84+
install(EXPORT ${PROJECT_NAME}_Targets
85+
FILE ${PROJECT_NAME}Targets.cmake
86+
NAMESPACE ${PROJECT_NAME}::
87+
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/cmake
88+
)
89+
install(FILES
90+
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
91+
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
92+
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake
93+
)
94+
install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/${PROJECT_NAME}
95+
DESTINATION include
96+
)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
@PACKAGE_INIT@
2+
3+
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
4+
check_required_components("@PROJECT_NAME@")

0 commit comments

Comments
 (0)