Compare commits
4 Commits
c9c13df552
...
d116e4db89
Author | SHA1 | Date | |
---|---|---|---|
d116e4db89 | |||
3ff1662e6c | |||
7cd6a6514e | |||
c62609e0dc |
@@ -5,13 +5,16 @@ with section("parse"):
|
|||||||
|
|
||||||
# Specify structure for custom cmake functions
|
# Specify structure for custom cmake functions
|
||||||
additional_commands = {
|
additional_commands = {
|
||||||
'add_common_library': { 'flags': [],
|
'add_common_library': { 'flags' : [],
|
||||||
'kwargs': { 'OUTPUT_NAME': '*',
|
'kwargs': { 'OUTPUT_NAME': '*',
|
||||||
'SOURCES': '*',
|
'SOURCES': '*',
|
||||||
'TARGET': '*'}},
|
'TARGET': '1'}},
|
||||||
'foo': { 'flags': ['BAR', 'BAZ'],
|
'qt5_translation': { 'flags' : [],
|
||||||
'kwargs': {'DEPENDS': '*', 'HEADERS': '*', 'SOURCES': '*'}},
|
'kwargs': { 'TS_DIR': '1',
|
||||||
'pvs_studio_add_target': { 'flags': [ 'COMPILE_COMMANDS',
|
'LANGUAGES': '*',
|
||||||
|
'SOURCES': '*',
|
||||||
|
'TARGET': '1'}},
|
||||||
|
'pvs_studio_add_target': { 'flags' : [ 'COMPILE_COMMANDS',
|
||||||
'OUTPUT',
|
'OUTPUT',
|
||||||
'HIDE_HELP'],
|
'HIDE_HELP'],
|
||||||
'kwargs': { 'ARGS': '*',
|
'kwargs': { 'ARGS': '*',
|
||||||
@@ -20,7 +23,7 @@ with section("parse"):
|
|||||||
'FORMAT': '*',
|
'FORMAT': '*',
|
||||||
'MODE': '*',
|
'MODE': '*',
|
||||||
'TARGET': '*'}},
|
'TARGET': '*'}},
|
||||||
'write_compiler_detection_header': { 'flags': [],
|
'write_compiler_detection_header': { 'flags' : [],
|
||||||
'kwargs': { 'COMPILERS': '*',
|
'kwargs': { 'COMPILERS': '*',
|
||||||
'FEATURES': '*',
|
'FEATURES': '*',
|
||||||
'FILE': '*',
|
'FILE': '*',
|
||||||
|
@@ -5,19 +5,15 @@ if(NOT TARGET create_auxilary_symlinks)
|
|||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/files
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/files
|
||||||
# Ссылка на каталог с журналами
|
# Ссылка на каталог с журналами
|
||||||
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/files/log
|
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/files/log ${CMAKE_BINARY_DIR}/files/log
|
||||||
${CMAKE_BINARY_DIR}/files/log
|
|
||||||
# Ссылка на каталог с обрабатываемыми данными
|
# Ссылка на каталог с обрабатываемыми данными
|
||||||
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/files/lib
|
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/files/lib ${CMAKE_BINARY_DIR}/files/lib
|
||||||
${CMAKE_BINARY_DIR}/files/lib
|
|
||||||
# Ссылка на каталог с временными данными
|
# Ссылка на каталог с временными данными
|
||||||
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/files/cache
|
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/files/cache
|
||||||
${CMAKE_BINARY_DIR}/files/cache
|
${CMAKE_BINARY_DIR}/files/cache
|
||||||
# Ссылка на каталог с постоянными данными
|
# Ссылка на каталог с постоянными данными
|
||||||
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/files/data
|
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/files/data ${CMAKE_BINARY_DIR}/files/data
|
||||||
${CMAKE_BINARY_DIR}/files/data
|
|
||||||
# Ссылка на каталог настроек
|
# Ссылка на каталог настроек
|
||||||
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/files/etc
|
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/files/etc ${CMAKE_BINARY_DIR}/etc)
|
||||||
${CMAKE_BINARY_DIR}/etc)
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
25
CMLibCPack.cmake
Normal file
25
CMLibCPack.cmake
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# Общие настройки для пакета: организация, автор, версия
|
||||||
|
set(CPACK_PACKAGE_VENDOR ${CMLIB_ORGANIZATION_NAME_LOWER})
|
||||||
|
set(CPACK_PACKAGE_NAME ${CMLIB_PROJECT_NAME_LOWER})
|
||||||
|
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
|
||||||
|
|
||||||
|
# Параметры для архива исходных текстов
|
||||||
|
set(CPACK_SOURCE_GENERATOR TXZ)
|
||||||
|
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMLIB_PROJECT_NAME_LOWER}-${CPACK_PACKAGE_VERSION}")
|
||||||
|
|
||||||
|
# Параметры для архива собранного проекта
|
||||||
|
set(CPACK_TARGET_ARCH ${CMAKE_SYSTEM_PROCESSOR})
|
||||||
|
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
||||||
|
set(CPACK_TARGET_ARCH "amd64")
|
||||||
|
endif()
|
||||||
|
set(CPACK_PACKAGE_FILE_NAME "${CMLIB_PROJECT_NAME_LOWER}_${CPACK_TARGET_ARCH}_${CPACK_PACKAGE_VERSION}")
|
||||||
|
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMLIB_PROJECT_NAME_LOWER}-${CPACK_PACKAGE_VERSION}")
|
||||||
|
|
||||||
|
set(CPACK_PROJECT_CONFIG_FILE ${CMAKE_CURRENT_LIST_DIR}/CMLibCPackProject.cmake)
|
||||||
|
|
||||||
|
# Правила для сборки пакетов для Debian
|
||||||
|
include(CMLibCPackDeb)
|
||||||
|
|
||||||
|
# Подключение модуля, выполняющего сборку архивов и пакетов
|
||||||
|
include(CPack)
|
||||||
|
|
52
CMLibCPackDeb.cmake
Normal file
52
CMLibCPackDeb.cmake
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
# По умолчанию пакет собирается для дистрибутива unstable
|
||||||
|
if(NOT DEBIAN_PACKAGE_TYPE)
|
||||||
|
set(DEBIAN_PACKAGE_TYPE "unstable")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# По умолчанию пакет для Debian делится на компоненты
|
||||||
|
if(NOT CPACK_DEB_COMPONENT_INSTALL)
|
||||||
|
set(CPACK_DEB_COMPONENT_INSTALL ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Если имя компонента по умолчанию не определено, то устанавливается MAIN
|
||||||
|
if(NOT CMAKE_INSTALL_DEFAULT_COMPONENT_NAME)
|
||||||
|
set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME MAIN)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# В списке компонентов обязательно должны быть MAIN и DEV
|
||||||
|
list(APPEND CPACK_COMPONENTS_ALL MAIN DEV)
|
||||||
|
list(REMOVE_DUPLICATES CPACK_COMPONENTS_ALL)
|
||||||
|
|
||||||
|
# Правило формирования имени пакета и файла для компонента MAIN
|
||||||
|
set(CPACK_DEBIAN_MAIN_PACKAGE_NAME "${CMLIB_PROJECT_NAME_LOWER}")
|
||||||
|
set(CPACK_DEBIAN_MAIN_FILE_NAME "${CMLIB_PROJECT_NAME_LOWER}_${CPACK_PACKAGE_VERSION}_${CPACK_TARGET_ARCH}.deb")
|
||||||
|
|
||||||
|
# Правило формирования имени пакета и файла для остальных компонентов
|
||||||
|
foreach(C ${CPACK_COMPONENTS_ALL})
|
||||||
|
if(NOT "${C}" STREQUAL "MAIN")
|
||||||
|
string(TOLOWER "${C}" cl)
|
||||||
|
set(CPACK_DEBIAN_${C}_PACKAGE_NAME "${CMLIB_PROJECT_NAME_LOWER}-${cl}")
|
||||||
|
set(CPACK_DEBIAN_${C}_FILE_NAME "${CMLIB_PROJECT_NAME_LOWER}-${cl}_${CPACK_PACKAGE_VERSION}_${CPACK_TARGET_ARCH}.deb")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
# Если в каталоге ${CMAKE_SOURCE_DIR}/cmake/deb находятся сценарии сопровождающего
|
||||||
|
# postinst, preinst, postrm и prerm, то они будут добавлены к пакету.
|
||||||
|
if(EXISTS "${CMAKE_SOURCE_DIR}/cmake/deb/preinst")
|
||||||
|
list(APPEND CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/cmake/deb/preinst")
|
||||||
|
endif()
|
||||||
|
if(EXISTS "${CMAKE_SOURCE_DIR}/cmake/deb/postinst")
|
||||||
|
list(APPEND CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/cmake/deb/postinst")
|
||||||
|
endif()
|
||||||
|
if(EXISTS "${CMAKE_SOURCE_DIR}/cmake/deb/prerm")
|
||||||
|
list(APPEND CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/cmake/deb/prerm")
|
||||||
|
endif()
|
||||||
|
if(EXISTS "${CMAKE_SOURCE_DIR}/cmake/deb/postrm")
|
||||||
|
list(APPEND CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/cmake/deb/postrm")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(UNIX AND NOT TARGET deb)
|
||||||
|
add_custom_target(deb
|
||||||
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
|
COMMAND cpack -G DEB)
|
||||||
|
endif()
|
6
CMLibCPackProject.cmake
Normal file
6
CMLibCPackProject.cmake
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
if(CPACK_GENERATOR MATCHES "DEB")
|
||||||
|
set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}")
|
||||||
|
else()
|
||||||
|
set(CPACK_PACKAGING_INSTALL_PREFIX "${PROJECT_NAME}")
|
||||||
|
endif()
|
||||||
|
|
@@ -1,12 +0,0 @@
|
|||||||
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
|
|
||||||
set(CPACK_SOURCE_GENERATOR TXZ)
|
|
||||||
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMLIB_PROJECT_NAME_LOWER}-${CPACK_PACKAGE_VERSION}")
|
|
||||||
|
|
||||||
set(CPACK_TARGET_ARCH ${CMAKE_SYSTEM_PROCESSOR})
|
|
||||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
|
||||||
set(CPACK_TARGET_ARCH "amd64")
|
|
||||||
endif()
|
|
||||||
set(CPACK_PACKAGE_FILE_NAME "${CMLIB_PROJECT_NAME_LOWER}_${CPACK_PACKAGE_VERSION}_${CPACK_TARGET_ARCH}")
|
|
||||||
|
|
||||||
include(CPack)
|
|
||||||
add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)
|
|
@@ -45,5 +45,5 @@ include(CMLibQtTranslation)
|
|||||||
include(CMLibToday)
|
include(CMLibToday)
|
||||||
include(CMLibAuxilarySymlinks)
|
include(CMLibAuxilarySymlinks)
|
||||||
include(CMLibConfigHPPGenerate)
|
include(CMLibConfigHPPGenerate)
|
||||||
include(CMLibCPackSources)
|
include(CMLibCPack)
|
||||||
include(CMLibUninstall)
|
include(CMLibUninstall)
|
||||||
|
@@ -4,6 +4,9 @@ canonical_string(${ORGANIZATION_NAME} CMLIB_ORGANIZATION_NAME_CANONICAL)
|
|||||||
string(TOLOWER ${CMLIB_ORGANIZATION_NAME_CANONICAL} CMLIB_ORGANIZATION_NAME_LOWER)
|
string(TOLOWER ${CMLIB_ORGANIZATION_NAME_CANONICAL} CMLIB_ORGANIZATION_NAME_LOWER)
|
||||||
string(TOLOWER ${CMLIB_PROJECT_NAME_CANONICAL} CMLIB_PROJECT_NAME_LOWER)
|
string(TOLOWER ${CMLIB_PROJECT_NAME_CANONICAL} CMLIB_PROJECT_NAME_LOWER)
|
||||||
|
|
||||||
|
string(TOUPPER ${CMLIB_ORGANIZATION_NAME_CANONICAL} CMLIB_ORGANIZATION_NAME_UPPER)
|
||||||
|
string(TOUPPER ${CMLIB_PROJECT_NAME_CANONICAL} CMLIB_PROJECT_NAME_UPPER)
|
||||||
|
|
||||||
# CMLIB_MODULE_DIR
|
# CMLIB_MODULE_DIR
|
||||||
foreach(_m ${CMAKE_MODULE_PATH})
|
foreach(_m ${CMAKE_MODULE_PATH})
|
||||||
if(EXISTS ${_m}/CMLibCommon.cmake)
|
if(EXISTS ${_m}/CMLibCommon.cmake)
|
||||||
|
@@ -15,13 +15,13 @@
|
|||||||
#if defined (CMLIB_ORGANIZATION_NAME_LOWER)
|
#if defined (CMLIB_ORGANIZATION_NAME_LOWER)
|
||||||
#error "Duplicate definition of macros CMLIB_ORGANIZATION_NAME_LOWER"
|
#error "Duplicate definition of macros CMLIB_ORGANIZATION_NAME_LOWER"
|
||||||
#else
|
#else
|
||||||
#define CMLIB_ORGANIZATION_NAME_LOWER "@ORGANIZATION_NAME_LOWER@"
|
#define CMLIB_ORGANIZATION_NAME_LOWER "@CMLIB_ORGANIZATION_NAME_LOWER@"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined (CMLIB_ORGANIZATION_NAME_UPPER)
|
#if defined (CMLIB_ORGANIZATION_NAME_UPPER)
|
||||||
#error "Duplicate definition of macros CMLIB_ORGANIZATION_NAME_UPPER"
|
#error "Duplicate definition of macros CMLIB_ORGANIZATION_NAME_UPPER"
|
||||||
#else
|
#else
|
||||||
#define CMLIB_ORGANIZATION_NAME_UPPER "@ORGANIZATION_NAME_UPPER@"
|
#define CMLIB_ORGANIZATION_NAME_UPPER "@CMLIB_ORGANIZATION_NAME_UPPER@"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined (CMLIB_PROJECT_NAME)
|
#if defined (CMLIB_PROJECT_NAME)
|
||||||
@@ -33,13 +33,13 @@
|
|||||||
#if defined (CMLIB_PROJECT_NAME_LOWER)
|
#if defined (CMLIB_PROJECT_NAME_LOWER)
|
||||||
#error "Duplicate definition of macros CMLIB_PROJECT_NAME_LOWER"
|
#error "Duplicate definition of macros CMLIB_PROJECT_NAME_LOWER"
|
||||||
#else
|
#else
|
||||||
#define CMLIB_PROJECT_NAME_LOWER "@CMAKE_PROJECT_NAME_LOWER@"
|
#define CMLIB_PROJECT_NAME_LOWER "@CMLIB_PROJECT_NAME_LOWER@"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined (CMLIB_PROJECT_NAME_UPPER)
|
#if defined (CMLIB_PROJECT_NAME_UPPER)
|
||||||
#error "Duplicate definition of macros CMLIB_PROJECT_NAME_UPPER"
|
#error "Duplicate definition of macros CMLIB_PROJECT_NAME_UPPER"
|
||||||
#else
|
#else
|
||||||
#define CMLIB_PROJECT_NAME_UPPER "@CMAKE_PROJECT_NAME_UPPER@"
|
#define CMLIB_PROJECT_NAME_UPPER "@CMLIB_PROJECT_NAME_UPPER@"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined (CMLIB_BUILD_TYPE)
|
#if defined (CMLIB_BUILD_TYPE)
|
||||||
|
Reference in New Issue
Block a user