5 changed files with 74 additions and 4 deletions
@ -0,0 +1,53 @@
|
||||
cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) |
||||
|
||||
# meta data |
||||
set(META_PROJECT_NAME c++utilities) |
||||
set(META_APP_NAME "C++ Utilities") |
||||
set(META_APP_AUTHOR "Martchus") |
||||
set(META_APP_URL "https://github.com/${META_APP_AUTHOR}/${META_PROJECT_NAME}") |
||||
set(META APP_DESCRIPTION "Common C++ classes and routines used by my applications such as argument parser, IO and conversion utilities.") |
||||
set(META_VERSION_MAJOR 3) |
||||
set(META_VERSION_MINOR 0) |
||||
set(META_VERSION_PATCH 0) |
||||
|
||||
# define project |
||||
project(${META_PROJECT_NAME}) |
||||
|
||||
# stringification of meta data |
||||
set(META_PROJECT_NAME_STR "\"${META_PROJECT_NAME}\"") |
||||
set(META_APP_NAME_STR "\"${META_APP_NAME}\"") |
||||
set(META_APP_AUTHOR_STR "\"${META_APP_AUTHOR}\"") |
||||
set(META_APP_URL_STR "\"${META_APP_URL}\"") |
||||
set(APP_DESCRIPTION_STR "\"${APP_DESCRIPTION}\"") |
||||
set(META_APP_VERSION_STR "\"${META_VERSION_MAJOR}.${META_VERSION_MINOR}.${META_VERSION_PATCH}\"") |
||||
|
||||
# add configuration header |
||||
configure_file ( |
||||
"${PROJECT_SOURCE_DIR}/config.h.in" |
||||
"${PROJECT_BINARY_DIR}/config.h" |
||||
) |
||||
include_directories("${PROJECT_BINARY_DIR}") |
||||
|
||||
# add source and header files |
||||
file(GLOB_RECURSE SRC_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cpp" "*.c") |
||||
file(GLOB_RECURSE HEADER_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.h") |
||||
|
||||
# executable and linking |
||||
add_library(${META_PROJECT_NAME} SHARED ${HEADER_FILES} ${SRC_FILES}) |
||||
target_link_libraries(${META_PROJECT_NAME}) |
||||
set_target_properties(${META_PROJECT_NAME} PROPERTIES VERSION ${META_VERSION_MAJOR}.${META_VERSION_MINOR}.${META_VERSION_PATCH} SOVERSION ${META_VERSION_MAJOR}) |
||||
|
||||
# enable C++11 |
||||
set_property(TARGET ${META_PROJECT_NAME} PROPERTY CXX_STANDARD 11) |
||||
|
||||
# add install target |
||||
install(TARGETS ${META_PROJECT_NAME} |
||||
RUNTIME DESTINATION bin |
||||
LIBRARY DESTINATION lib |
||||
ARCHIVE DESTINATION lib |
||||
) |
||||
foreach(HEADER_FILE ${HEADER_FILES}) |
||||
get_filename_component(HEADER_DIR ${HEADER_FILE} DIRECTORY) |
||||
install(FILES ${HEADER_FILE} DESTINATION include/${META_PROJECT_NAME}/${HEADER_DIR}) |
||||
endforeach() |
||||
|
@ -0,0 +1,9 @@
|
||||
#ifndef APP_METADATA_AVAIL |
||||
#define APP_METADATA_AVAIL |
||||
#define PROJECT_NAME @META_PROJECT_NAME_STR@ |
||||
#define APP_NAME @META_APP_NAME_STR@ |
||||
#define APP_VERSION @META_APP_VERSION_STR@ |
||||
#define APP_AUTHOR @META_APP_AUTHOR_STR@ |
||||
#define APP_URL @META_APP_URL_STR@ |
||||
#define APP_DESCRIPTION @META_APP_DESCRIPTION_STR@ |
||||
#endif // APP_METADATA_AVAIL
|
Loading…
Reference in new issue