1- project (matplotlibcpp17)
21cmake_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+
410find_package (Python3 COMPONENTS Interpreter Development NumPy )
511find_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
1116if (NOT DEFINED USE_GUI)
1217 set (USE_GUI 0)
1318endif ()
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
1723function (add_demo name path )
1824 add_executable (${name} ${path} )
@@ -39,10 +45,52 @@ if(${ADD_DEMO})
3945 add_subdirectory (gallery/mplot3d )
4046endif ()
4147
48+
49+ # test
4250if (NOT DEFINED DO_TEST)
4351 set (DO_TEST ON )
4452endif ()
45-
4653if (${DO_TEST} )
4754 add_subdirectory (tests )
4855endif ()
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+ )
0 commit comments