|
1 | | -cmake_minimum_required(VERSION 2.8.8) |
| 1 | +cmake_minimum_required(VERSION 2.8) |
2 | 2 |
|
3 | 3 | project(LetMeCreate) |
4 | 4 |
|
5 | | -option(BUILD_EXAMPLES "Build examples" OFF) |
6 | | -option(BUILD_TESTS "Build tests" OFF) |
7 | 5 |
|
8 | | -set(letmecreate_VERSION_MAJOR 0) |
9 | | -set(letmecreate_VERSION_MINOR 1) |
| 6 | +set(LETMECREATE_MAJOR_VERSION 1) |
| 7 | +set(LETMECREATE_MINOR_VERSION 0) |
| 8 | +set(LETMECREATE_PATCH_VERSION 1) |
| 9 | +set(LETMECREATE_VERSION ${LETMECREATE_MAJOR_VERSION}.${LETMECREATE_MINOR_VERSION}.${LETMECREATE_PATCH_VERSION}) |
| 10 | +set(PROJECT_VERSION ${LETMECREATE_VERSION}) |
10 | 11 |
|
11 | | -set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall -ggdb3") |
12 | | -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) |
| 12 | +option(BUILD_EXAMPLES "Build examples" OFF) |
| 13 | +option(BUILD_TESTS "Build tests" OFF) |
13 | 14 |
|
14 | | -include_directories(include) |
15 | 15 | file(GLOB core_srcs src/core/*.c) |
16 | 16 | file(GLOB click_srcs src/click/*.c) |
17 | 17 |
|
| 18 | +include_directories(include) |
| 19 | + |
| 20 | +# Create targets |
18 | 21 | add_library(letmecreate_core SHARED ${core_srcs}) |
19 | 22 | add_library(letmecreate_click SHARED ${click_srcs}) |
| 23 | +target_link_libraries(letmecreate_click letmecreate_core) |
| 24 | + |
| 25 | +target_compile_definitions(letmecreate_core PUBLIC "LETMECREATE_CORE_DEBUG=$<CONFIG:Debug>") |
| 26 | +target_compile_definitions(letmecreate_click PUBLIC "LETMECREATE_CLICK_DEBUG=$<CONFIG:Debug>") |
| 27 | + |
| 28 | + |
| 29 | +target_include_directories( |
| 30 | + letmecreate_core PUBLIC |
| 31 | + "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>" |
| 32 | + "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>" |
| 33 | +) |
| 34 | +target_include_directories( |
| 35 | + letmecreate_click PUBLIC |
| 36 | + "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>" |
| 37 | + "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>" |
| 38 | +) |
| 39 | + |
| 40 | + |
| 41 | +set(config_install_dir "lib/cmake/${PROJECT_NAME}") |
| 42 | +set(include_install_dir "include") |
| 43 | + |
| 44 | +set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated") |
| 45 | + |
| 46 | +# Configuration |
| 47 | +set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake") |
| 48 | +set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake") |
| 49 | +set(targets_export_name "${PROJECT_NAME}Targets") |
| 50 | + |
| 51 | +# Include module with fuction 'write_basic_package_version_file' |
| 52 | +include(CMakePackageConfigHelpers) |
| 53 | + |
| 54 | +# Configure '<PROJECT-NAME>ConfigVersion.cmake' |
| 55 | +# Note: PROJECT_VERSION is used as a VERSION |
| 56 | +write_basic_package_version_file( |
| 57 | + "${version_config}" COMPATIBILITY SameMajorVersion |
| 58 | +) |
| 59 | + |
| 60 | +# Configure '<PROJECT-NAME>Config.cmake' |
| 61 | +# Use variables: |
| 62 | +# * targets_export_name |
| 63 | +# * PROJECT_NAME |
| 64 | +configure_package_config_file( |
| 65 | + "cmake/Config.cmake.in" |
| 66 | + "${project_config}" |
| 67 | + INSTALL_DESTINATION "${config_install_dir}" |
| 68 | +) |
| 69 | + |
| 70 | +# Targets: |
| 71 | +# * <prefix>/lib/libbar.a |
| 72 | +# * <prefix>/lib/libbaz.a |
| 73 | +# * header location after install: <prefix>/include/foo/Bar.hpp |
| 74 | +# * headers can be included by C++ code `#include <foo/Bar.hpp>` |
| 75 | +install( |
| 76 | + TARGETS letmecreate_core letmecreate_click |
| 77 | + EXPORT "${targets_export_name}" |
| 78 | + LIBRARY DESTINATION "lib" |
| 79 | + ARCHIVE DESTINATION "lib" |
| 80 | + RUNTIME DESTINATION "bin" |
| 81 | + INCLUDES DESTINATION "${include_install_dir}" |
| 82 | +) |
| 83 | + |
| 84 | +# Headers: |
| 85 | +# * Source/foo/Bar.hpp -> <prefix>/include/foo/Bar.hpp |
| 86 | +# * Source/foo/Baz.hpp -> <prefix>/include/foo/Baz.hpp |
| 87 | +install( |
| 88 | + DIRECTORY "include/letmecreate" |
| 89 | + DESTINATION "${include_install_dir}" |
| 90 | + FILES_MATCHING PATTERN "*.h" |
| 91 | +) |
| 92 | + |
| 93 | +# Config |
| 94 | +# * <prefix>/lib/cmake/Foo/FooConfig.cmake |
| 95 | +# * <prefix>/lib/cmake/Foo/FooConfigVersion.cmake |
| 96 | +install( |
| 97 | + FILES "${project_config}" "${version_config}" |
| 98 | + DESTINATION "${config_install_dir}" |
| 99 | +) |
| 100 | + |
| 101 | +# Config |
| 102 | +# * <prefix>/lib/cmake/Foo/FooTargets.cmake |
| 103 | +install( |
| 104 | + EXPORT "${targets_export_name}" |
| 105 | + DESTINATION "${config_install_dir}" |
| 106 | +) |
20 | 107 |
|
21 | | -install(TARGETS letmecreate_core LIBRARY DESTINATION lib) |
22 | | -install(TARGETS letmecreate_click LIBRARY DESTINATION lib) |
23 | 108 |
|
24 | 109 | if(BUILD_EXAMPLES) |
25 | 110 | add_subdirectory(examples) |
|
0 commit comments