stamenStatic Menu Generator |
git clone git://git.dimitrijedobrota.com/stamen.git |
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING |
CMakeLists.txt (2285B)
0 cmake_minimum_required(VERSION 3.14)
2 include(cmake/prelude.cmake)
4 project(
5 stamen
6 VERSION 1.2.0
7 DESCRIPTION "Static menu generator"
8 HOMEPAGE_URL "https://git.dimitrijedobrota.com/stamen"
9 LANGUAGES C CXX
10 )
12 include(cmake/project-is-top-level.cmake)
13 include(cmake/variables.cmake)
15 find_package(poafloc 1.1 CONFIG REQUIRED)
17 # ---- Declare library ----
19 add_library(
20 stamen_stamen
21 source/stamen.cpp
22 source/menu.cpp
23 source/c_bindings.cpp
24 )
25 target_link_libraries(stamen_stamen PUBLIC poafloc::poafloc)
26 add_library(stamen::stamen ALIAS stamen_stamen)
28 include(GenerateExportHeader)
29 generate_export_header(
30 stamen_stamen
31 BASE_NAME stamen
32 EXPORT_FILE_NAME export/stamen/stamen_export.hpp
33 CUSTOM_CONTENT_FROM_VARIABLE pragma_suppress_c4251
34 )
36 if(NOT BUILD_SHARED_LIBS)
37 target_compile_definitions(stamen_stamen PUBLIC STAMEN_STATIC_DEFINE)
38 endif()
40 set_target_properties(
41 stamen_stamen PROPERTIES
42 CXX_VISIBILITY_PRESET hidden
43 VISIBILITY_INLINES_HIDDEN YES
44 VERSION "${PROJECT_VERSION}"
45 SOVERSION "${PROJECT_VERSION_MAJOR}"
46 EXPORT_NAME stamen
47 OUTPUT_NAME stamen
48 )
50 target_include_directories(
51 stamen_stamen ${warning_guard}
52 PUBLIC
53 "\$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>"
54 )
56 target_include_directories(
57 stamen_stamen SYSTEM
58 PUBLIC
59 "\$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/export>"
60 )
62 target_compile_features(stamen_stamen PUBLIC cxx_std_20)
64 # ---- Declare executable ----
66 add_executable(stamen_exe source/generate.cpp)
67 add_executable(stamen::exe ALIAS stamen_exe)
69 target_link_libraries(stamen_exe PRIVATE stamen::stamen)
70 set_property(TARGET stamen_exe PROPERTY OUTPUT_NAME stamen)
72 target_compile_features(stamen_exe PRIVATE cxx_std_20)
74 # ---- Install rules ----
76 if(NOT CMAKE_SKIP_INSTALL_RULES)
77 include(cmake/install-rules.cmake)
78 endif()
80 # ---- Examples ----
82 if(PROJECT_IS_TOP_LEVEL)
83 option(BUILD_EXAMPLES "Build examples tree." "${stamen_DEVELOPER_MODE}")
84 if(BUILD_EXAMPLES)
85 add_subdirectory(example)
86 endif()
87 endif()
89 # ---- Developer mode ----
91 if(NOT stamen_DEVELOPER_MODE)
92 return()
93 elseif(NOT PROJECT_IS_TOP_LEVEL)
94 message(
95 AUTHOR_WARNING
96 "Developer mode is intended for developers of stamen"
97 )
98 endif()
100 include(cmake/dev-mode.cmake)