Skip to content

Commit c5bf42e

Browse files
Merge branch 'dev'
2 parents 399286b + a4a665c commit c5bf42e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+3182
-179
lines changed

CMakeLists.txt

Lines changed: 95 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,110 @@
1-
cmake_minimum_required(VERSION 2.8.8)
1+
cmake_minimum_required(VERSION 2.8)
22

33
project(LetMeCreate)
44

5-
option(BUILD_EXAMPLES "Build examples" OFF)
6-
option(BUILD_TESTS "Build tests" OFF)
75

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})
1011

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)
1314

14-
include_directories(include)
1515
file(GLOB core_srcs src/core/*.c)
1616
file(GLOB click_srcs src/click/*.c)
1717

18+
include_directories(include)
19+
20+
# Create targets
1821
add_library(letmecreate_core SHARED ${core_srcs})
1922
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+
)
20107

21-
install(TARGETS letmecreate_core LIBRARY DESTINATION lib)
22-
install(TARGETS letmecreate_click LIBRARY DESTINATION lib)
23108

24109
if(BUILD_EXAMPLES)
25110
add_subdirectory(examples)

0 commit comments

Comments
 (0)