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)


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