stamen

Static 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) 1 2 include(cmake/prelude.cmake) 3 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 ) 11 12 include(cmake/project-is-top-level.cmake) 13 include(cmake/variables.cmake) 14 15 find_package(poafloc 1.1 CONFIG REQUIRED) 16 17 # ---- Declare library ---- 18 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) 27 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 ) 35 36 if(NOT BUILD_SHARED_LIBS) 37 target_compile_definitions(stamen_stamen PUBLIC STAMEN_STATIC_DEFINE) 38 endif() 39 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 ) 49 50 target_include_directories( 51 stamen_stamen ${warning_guard} 52 PUBLIC 53 "\$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>" 54 ) 55 56 target_include_directories( 57 stamen_stamen SYSTEM 58 PUBLIC 59 "\$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/export>" 60 ) 61 62 target_compile_features(stamen_stamen PUBLIC cxx_std_20) 63 64 # ---- Declare executable ---- 65 66 add_executable(stamen_exe source/generate.cpp) 67 add_executable(stamen::exe ALIAS stamen_exe) 68 69 target_link_libraries(stamen_exe PRIVATE stamen::stamen) 70 set_property(TARGET stamen_exe PROPERTY OUTPUT_NAME stamen) 71 72 target_compile_features(stamen_exe PRIVATE cxx_std_20) 73 74 # ---- Install rules ---- 75 76 if(NOT CMAKE_SKIP_INSTALL_RULES) 77 include(cmake/install-rules.cmake) 78 endif() 79 80 # ---- Examples ---- 81 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() 88 89 # ---- Developer mode ---- 90 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() 99 100 include(cmake/dev-mode.cmake)