cemplate

Simple C++ template engine
git clone git://git.dimitrijedobrota.com/cemplate.git
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING |

CMakeLists.txt (1903B)


1 cmake_minimum_required(VERSION 3.14) 2 3 include(cmake/prelude.cmake) 4 5 project( 6 cemplate 7 VERSION 0.2.0 8 DESCRIPTION "Simple C++ template engine" 9 HOMEPAGE_URL "https://git.dimitrijedobrota.com/cemplate.git" 10 LANGUAGES CXX 11 ) 12 13 include(cmake/project-is-top-level.cmake) 14 include(cmake/variables.cmake) 15 16 # ---- Declare library ---- 17 18 add_library( 19 cemplate_cemplate 20 source/cemplate.cpp 21 ) 22 add_library(cemplate::cemplate ALIAS cemplate_cemplate) 23 24 include(GenerateExportHeader) 25 generate_export_header( 26 cemplate_cemplate 27 BASE_NAME cemplate 28 EXPORT_FILE_NAME export/cemplate/cemplate_export.hpp 29 CUSTOM_CONTENT_FROM_VARIABLE pragma_suppress_c4251 30 ) 31 32 if(NOT BUILD_SHARED_LIBS) 33 target_compile_definitions(cemplate_cemplate PUBLIC CEMPLATE_STATIC_DEFINE) 34 endif() 35 36 set_target_properties( 37 cemplate_cemplate PROPERTIES 38 CXX_VISIBILITY_PRESET hidden 39 VISIBILITY_INLINES_HIDDEN YES 40 VERSION "${PROJECT_VERSION}" 41 SOVERSION "${PROJECT_VERSION_MAJOR}" 42 EXPORT_NAME cemplate 43 OUTPUT_NAME cemplate 44 ) 45 46 target_include_directories( 47 cemplate_cemplate ${warning_guard} 48 PUBLIC 49 "\$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>" 50 ) 51 52 target_include_directories( 53 cemplate_cemplate SYSTEM 54 PUBLIC 55 "\$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/export>" 56 ) 57 58 target_compile_features(cemplate_cemplate PUBLIC cxx_std_20) 59 60 # ---- Install rules ---- 61 62 if(NOT CMAKE_SKIP_INSTALL_RULES) 63 include(cmake/install-rules.cmake) 64 endif() 65 66 # ---- Examples ---- 67 68 if(PROJECT_IS_TOP_LEVEL) 69 option(BUILD_EXAMPLES "Build examples tree." "${cemplate_DEVELOPER_MODE}") 70 if(BUILD_EXAMPLES) 71 add_subdirectory(example) 72 endif() 73 endif() 74 75 # ---- Developer mode ---- 76 77 if(NOT cemplate_DEVELOPER_MODE) 78 return() 79 elseif(NOT PROJECT_IS_TOP_LEVEL) 80 message( 81 AUTHOR_WARNING 82 "Developer mode is intended for developers of cemplate" 83 ) 84 endif() 85 86 include(cmake/dev-mode.cmake)