Compare commits

...

3 Commits

6 changed files with 63 additions and 14 deletions

View File

@@ -24,14 +24,29 @@ endif()
if(CMAKE_BUILD_TYPE STREQUAL Profile)
# Ключи компиляции для режима профилирования в зависимости от типа компилятора
if(CMAKE_CXX_COMPILER_IS_Clang OR CMAKE_CXX_COMPILER_IS_GCC)
set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE} -ggdb -pg -fno-omit-frame-pointer" CACHE STRING ""
FORCE)
set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE} -ggdb -pg -fno-omit-frame-pointer" CACHE STRING
"" FORCE)
set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -pg" CACHE STRING "" FORCE)
set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -pg" CACHE STRING "" FORCE)
set(CMAKE_STATIC_LINKER_FLAGS_PROFILE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} -pg" CACHE STRING "" FORCE)
set(CMAKE_MODULE_LINKER_FLAGS_PROFILE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} -pg" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_PROFILE ${CMAKE_C_FLAGS_RELEASE} -ggdb -pg -fno-omit-frame-pointer)
list(REMOVE_DUPLICATES CMAKE_C_FLAGS_PROFILE)
set(CMAKE_C_FLAGS_PROFILE CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_PROFILE ${CMAKE_CXX_FLAGS_RELEASE} -ggdb -pg -fno-omit-frame-pointer)
list(REMOVE_DUPLICATES CMAKE_CXX_FLAGS_PROFILE)
set(CMAKE_CXX_FLAGS_PROFILE CACHE STRING "" FORCE)
set(CMAKE_EXE_LINKER_FLAGS_PROFILE ${CMAKE_EXE_LINKER_FLAGS_RELEASE} -pg)
list(REMOVE_DUPLICATES CMAKE_EXE_LINKER_FLAGS_PROFILE)
set(CMAKE_EXE_LINKER_FLAGS_PROFILE CACHE STRING "" FORCE)
set(CMAKE_SHARED_LINKER_FLAGS_PROFILE ${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -pg)
list(REMOVE_DUPLICATES CMAKE_SHARED_LINKER_FLAGS_PROFILE)
set(CMAKE_SHARED_LINKER_FLAGS_PROFILE CACHE STRING "" FORCE)
set(CMAKE_STATIC_LINKER_FLAGS_PROFILE ${CMAKE_STATIC_LINKER_FLAGS_RELEASE} -pg)
list(REMOVE_DUPLICATES CMAKE_STATIC_LINKER_FLAGS_PROFILE)
set(CMAKE_STATIC_LINKER_FLAGS_PROFILE CACHE STRING "" FORCE)
set(CMAKE_MODULE_LINKER_FLAGS_PROFILE ${CMAKE_MODULE_LINKER_FLAGS_RELEASE} -pg)
list(REMOVE_DUPLICATES CMAKE_MODULE_LINKER_FLAGS_PROFILE)
set(CMAKE_MODULE_LINKER_FLAGS_PROFILE CACHE STRING "" FORCE)
elseif(CMAKE_CXX_COMPILER_IS_Intel)
message("Set options for profiling with Intel C++")
elseif(CMAKE_CXX_COMPILER_IS_MSVC)
@@ -43,8 +58,13 @@ if(CMAKE_BUILD_TYPE STREQUAL Profile)
elseif(CMAKE_BUILD_TYPE STREQUAL Debug)
# В режиме отладки подробный вывод сообщений компилятора
if(CMAKE_CXX_COMPILER_IS_Clang OR CMAKE_CXX_COMPILER_IS_GCC)
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ggdb -fno-omit-frame-pointer" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -ggdb -fno-omit-frame-pointer" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG} -ggdb -fno-omit-frame-pointer)
list(REMOVE_DUPLICATES CMAKE_C_FLAGS_DEBUG)
set(CMAKE_C_FLAGS_DEBUG CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG} -ggdb -fno-omit-frame-pointer)
list(REMOVE_DUPLICATES CMAKE_CXX_FLAGS_DEBUG)
set(CMAKE_CXX_FLAGS_DEBUG CACHE STRING "" FORCE)
endif()
set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "Enable generation of verbose build scripts." FORCE)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "Enable generation of compile_commands.json." FORCE)

View File

@@ -5,13 +5,13 @@ set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
# Параметры для архива исходных текстов
if(NOT CPACK_SOURCE_GENERATOR)
set(CPACK_SOURCE_GENERATOR "TXZ")
set(CPACK_SOURCE_GENERATOR "TGZ")
endif()
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMLIB_PROJECT_NAME_LOWER}-${CPACK_PACKAGE_VERSION}")
# Типы генераторов для бинарных архивов
if(NOT CPACK_GENERATOR)
set(CPACK_GENERATOR "TXZ" "DEB")
set(CPACK_GENERATOR "TGZ" "DEB")
endif()
# Параметры для архива собранного проекта
@@ -54,6 +54,14 @@ endif()
set(CPACK_PROJECT_CONFIG_FILE ${CMAKE_CURRENT_LIST_DIR}/CMLibCPackProject.cmake)
option(CMLIB_CPACK_DEFAULT_SCHEME "Use packaging default scheme" ON)
# Правила для сборки обычных архивов
if(CMLIB_CPACK_DEFAULT_SCHEME)
set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
set(CPACK_COMPONENTS_GROUPING IGNORE)
endif()
# Правила для сборки пакетов для Debian
include(CMLibCPackDeb)

View File

@@ -16,8 +16,6 @@ if(NOT CPACK_DEB_COMPONENT_INSTALL)
set(CPACK_DEB_COMPONENT_INSTALL ON)
endif()
option(CMLIB_CPACK_DEFAULT_SCHEME "Use packaging default scheme" ON)
if(CMLIB_CPACK_DEFAULT_SCHEME)
# Если имя компонента по умолчанию не определено, то устанавливается MAIN
if(NOT CMAKE_INSTALL_DEFAULT_COMPONENT_NAME)

View File

@@ -30,6 +30,7 @@ include(CMLibCompilerFeaturesHPPGenerate)
include(CMLibFlagRemove)
include(CMLibCotire)
include(CMLibBuildTypes)
include(CMLibDebugOutput)
include(CMLibCommonTargetProperties)
include(CMLibCommonLibraryTarget)
include(CMLibPkgConfig)

View File

@@ -37,6 +37,15 @@ function(common_target_properties target)
if(_targetType STREQUAL "EXECUTABLE")
target_compile_options(${target} PUBLIC "${Qt5Core_EXECUTABLE_COMPILE_FLAGS}")
endif()
if(NOT CMLIB_DEBUG_OUTPUT)
add_definitions(-DQT_NO_DEBUG_OUTPUT)
endif()
if(NOT CMLIB_INFO_OUTPUT)
add_definitions(-DQT_NO_INFO_OUTPUT)
endif()
if(NOT CMLIB_WARNING_OUTPUT)
add_definitions(-DQT_NO_WARNING_OUTPUT)
endif()
endif()
if(CMAKE_CXX_COMPILER_IS_GCC AND NOT APPLE)
set_target_properties(${target} PROPERTIES LINK_FLAGS "-Wl,--no-as-needed")

13
CMLibDebugOutput.cmake Normal file
View File

@@ -0,0 +1,13 @@
# По умолчанию отключена отладочная печать
# (если не включена явно программистом)
option(CMLIB_DEBUG_OUTPUT "Enable debug output" OFF)
option(CMLIB_INFO_OUTPUT "Enable info output" OFF)
option(CMLIB_WARNING_OUTPUT "Enable warning output" OFF)
# Если сборка производится в режиме для отладки,
# то включаются флаги для разрешения отладочной печати
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMLIB_DEBUG_OUTPUT ON CACHE BOOL "" FORCE)
set(CMLIB_INFO_OUTPUT ON CACHE BOOL "" FORCE)
set(CMLIB_WARNING_OUTPUT ON CACHE BOOL "" FORCE)
endif()