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)