display

Layout and Rendering TUI library
git clone git://git.dimitrijedobrota.com/display.git
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING

CMakeLists.txt (2129B)


0 cmake_minimum_required(VERSION 3.14)
2 include(cmake/prelude.cmake)
4 project(
5 display
6 VERSION 0.3.0
7 DESCRIPTION "TUI library"
8 HOMEPAGE_URL "git://git.dimitrijedobrota.com/display.git"
9 LANGUAGES CXX
10 )
12 include(cmake/project-is-top-level.cmake)
13 include(cmake/variables.cmake)
15 find_package(alec 0.2.0 CONFIG REQUIRED)
16 find_package(based 0.2.0 CONFIG REQUIRED)
18 # ---- Declare library ----
20 add_library(
21 display_display
22 source/display.cpp
23 source/element.cpp
24 source/window.cpp
25 source/window_pivot.cpp
26 )
27 target_link_libraries(display_display PUBLIC alec::alec)
28 target_link_libraries(display_display PUBLIC based::based)
29 add_library(display::display ALIAS display_display)
31 include(GenerateExportHeader)
32 generate_export_header(
33 display_display
34 BASE_NAME display
35 EXPORT_FILE_NAME export/display/display_export.hpp
36 CUSTOM_CONTENT_FROM_VARIABLE pragma_suppress_c4251
37 )
39 if(NOT BUILD_SHARED_LIBS)
40 target_compile_definitions(display_display PUBLIC DISPLAY_STATIC_DEFINE)
41 endif()
43 set_target_properties(
44 display_display PROPERTIES
45 CXX_VISIBILITY_PRESET hidden
46 VISIBILITY_INLINES_HIDDEN YES
47 VERSION "${PROJECT_VERSION}"
48 SOVERSION "${PROJECT_VERSION_MAJOR}"
49 EXPORT_NAME display
50 OUTPUT_NAME display
51 )
53 target_include_directories(
54 display_display ${warning_guard}
55 PUBLIC
56 "\$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>"
57 )
59 target_include_directories(
60 display_display SYSTEM
61 PUBLIC
62 "\$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/export>"
63 )
65 target_compile_features(display_display PUBLIC cxx_std_20)
67 # ---- Install rules ----
69 if(NOT CMAKE_SKIP_INSTALL_RULES)
70 include(cmake/install-rules.cmake)
71 endif()
73 # ---- Examples ----
75 if(PROJECT_IS_TOP_LEVEL)
76 option(BUILD_EXAMPLES "Build examples tree." "${display_DEVELOPER_MODE}")
77 if(BUILD_EXAMPLES)
78 add_subdirectory(example)
79 endif()
80 endif()
82 # ---- Developer mode ----
84 if(NOT display_DEVELOPER_MODE)
85 return()
86 elseif(NOT PROJECT_IS_TOP_LEVEL)
87 message(
88 AUTHOR_WARNING
89 "Developer mode is intended for developers of display"
90 )
91 endif()
93 include(cmake/dev-mode.cmake)