mirror of
https://github.com/gelldur/EventBus.git
synced 2024-12-26 18:51:02 +08:00
Update for better managing Debug/Release
Updated project for easy switch between debug/release versions of library Thanks to that we can do only find_package and don't have to care about if's switching between debug/release Thanks: https://github.com/forexample/package-example
This commit is contained in:
parent
7d708959d9
commit
f9195316d3
@ -222,6 +222,11 @@ Please report here issue / question / whatever in 99% I will answer ;)
|
||||
- [swietlana](https://github.com/swietlana) for english correction and support ;)
|
||||
- [ruslo](https://github.com/ruslo) for this great example: https://github.com/forexample/package-example
|
||||
|
||||
## For modern cmake refer
|
||||
|
||||
- https://github.com/forexample/package-example
|
||||
- https://www.youtube.com/watch?v=6sWec7b0JIc
|
||||
|
||||
# License
|
||||
|
||||
EventBus source code can be used according to the **Apache License, Version 2.0**.
|
||||
|
@ -9,6 +9,18 @@ project(EventBus
|
||||
# Dependencies
|
||||
# No dependencies for EventBus yay!
|
||||
|
||||
# Introduce variables:
|
||||
# * CMAKE_INSTALL_LIBDIR
|
||||
# * CMAKE_INSTALL_BINDIR
|
||||
# * CMAKE_INSTALL_INCLUDEDIR
|
||||
include(GNUInstallDirs)
|
||||
|
||||
# Layout. This works for all platforms:
|
||||
# * <prefix>/lib*/cmake/<PROJECT-NAME>
|
||||
# * <prefix>/lib*/
|
||||
# * <prefix>/include/
|
||||
set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
|
||||
|
||||
# Library definition
|
||||
add_library(EventBus
|
||||
src/EventCollector.cpp include/eventbus/EventCollector.h
|
||||
@ -24,26 +36,69 @@ target_include_directories(EventBus PUBLIC
|
||||
PRIVATE lib/src/
|
||||
)
|
||||
|
||||
install(TARGETS EventBus EXPORT EventBusTargets
|
||||
ARCHIVE DESTINATION lib/
|
||||
LIBRARY DESTINATION lib/
|
||||
RUNTIME DESTINATION bin/
|
||||
INCLUDES DESTINATION include/
|
||||
# Add definitions for targets
|
||||
# Values:
|
||||
# * Debug: -DEVENTBUS_DEBUG=1
|
||||
# * Release: -DEVENTBUS_DEBUG=0
|
||||
# * other: -DEVENTBUS_DEBUG=0
|
||||
target_compile_definitions(EventBus PUBLIC "EVENTBUS_DEBUG=$<CONFIG:Debug>")
|
||||
|
||||
|
||||
# Configuration
|
||||
set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
|
||||
set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake")
|
||||
set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake")
|
||||
set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
|
||||
set(namespace "Dexode::")
|
||||
|
||||
# Targets:
|
||||
# * <prefix>/lib/libEventBus.a
|
||||
# * header location after install: <prefix>/include/eventbus/EventBus.h
|
||||
# * headers can be included by C++ code `#include <eventbus/EventBus.h>`
|
||||
install(TARGETS EventBus
|
||||
EXPORT "${TARGETS_EXPORT_NAME}"
|
||||
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
||||
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
|
||||
)
|
||||
|
||||
install(EXPORT EventBusTargets
|
||||
DESTINATION lib/cmake/EventBus
|
||||
FILE EventBusTargets.cmake
|
||||
NAMESPACE Dexode::
|
||||
)
|
||||
|
||||
# Copy public headers
|
||||
# Export headers
|
||||
install(DIRECTORY include/eventbus
|
||||
DESTINATION include/
|
||||
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
|
||||
)
|
||||
|
||||
# Include module with fuction 'write_basic_package_version_file'
|
||||
include(CMakePackageConfigHelpers)
|
||||
write_basic_package_version_file(EventBusConfigVersion.cmake COMPATIBILITY SameMajorVersion)
|
||||
|
||||
install(FILES EventBusConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/EventBusConfigVersion.cmake
|
||||
DESTINATION lib/cmake/EventBus)
|
||||
# Configure '<PROJECT-NAME>ConfigVersion.cmake'
|
||||
# Use:
|
||||
# * PROJECT_VERSION
|
||||
write_basic_package_version_file(
|
||||
"${version_config}" COMPATIBILITY SameMajorVersion
|
||||
)
|
||||
|
||||
# Configure '<PROJECT-NAME>Config.cmake'
|
||||
# Use variables:
|
||||
# * TARGETS_EXPORT_NAME
|
||||
# * PROJECT_NAME
|
||||
configure_package_config_file(
|
||||
"cmake/Config.cmake.in"
|
||||
"${project_config}"
|
||||
INSTALL_DESTINATION "${config_install_dir}"
|
||||
)
|
||||
|
||||
# Config
|
||||
# * <prefix>/lib/cmake/EventBusventBusConfig.cmake
|
||||
# * <prefix>/lib/cmake/EventBus/EventBusConfigVersion.cmake
|
||||
install(
|
||||
FILES "${project_config}" "${version_config}"
|
||||
DESTINATION "${config_install_dir}"
|
||||
)
|
||||
|
||||
# Config
|
||||
# * <prefix>/lib/cmake/EventBus/EventBusTargets.cmake
|
||||
install(EXPORT "${TARGETS_EXPORT_NAME}"
|
||||
DESTINATION "${config_install_dir}"
|
||||
NAMESPACE "${namespace}"
|
||||
)
|
||||
|
@ -1,6 +0,0 @@
|
||||
include(CMakeFindDependencyMacro)
|
||||
|
||||
# We don't have dependencies
|
||||
# find_dependency(Foo 1.0)
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/EventBusTargets.cmake")
|
4
lib/cmake/Config.cmake.in
Normal file
4
lib/cmake/Config.cmake.in
Normal file
@ -0,0 +1,4 @@
|
||||
@PACKAGE_INIT@
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake")
|
||||
check_required_components("@PROJECT_NAME@")
|
Loading…
x
Reference in New Issue
Block a user