Compare commits
7 Commits
4768c5efc7
...
0b69005b7a
Author | SHA1 | Date | |
---|---|---|---|
0b69005b7a | |||
cebdb82bfa | |||
b5ed0303a1 | |||
3e8511da71 | |||
3c0fd214b9 | |||
8730aba9bf | |||
f168386296 |
@ -1,3 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# ----------------------------------
|
||||
# Options affecting listfile parsing
|
||||
# ----------------------------------
|
||||
@ -5,15 +7,21 @@ with section("parse"):
|
||||
|
||||
# Specify structure for custom cmake functions
|
||||
additional_commands = {
|
||||
'add_doxygen': { 'flags' : [],
|
||||
'kwargs': { 'LATEX': 1,
|
||||
'HTML': 1,
|
||||
'COMMENT': 1}},
|
||||
'add_breathe': { 'flags' : [],
|
||||
'kwargs': { 'COMMENT': 1}},
|
||||
'add_common_library': { 'flags' : [],
|
||||
'kwargs': { 'OUTPUT_NAME': '*',
|
||||
'kwargs': { 'OUTPUT_NAME': 1,
|
||||
'SOURCES': '*',
|
||||
'TARGET': '1'}},
|
||||
'TARGET': 1}},
|
||||
'qt5_translation': { 'flags' : [],
|
||||
'kwargs': { 'TS_DIR': '1',
|
||||
'kwargs': { 'OUTPUT_DIR': 1,
|
||||
'LANGUAGES': '*',
|
||||
'SOURCES': '*',
|
||||
'TARGET': '1'}},
|
||||
'BASE_NAME': 1}},
|
||||
'pvs_studio_add_target': { 'flags' : [ 'COMPILE_COMMANDS',
|
||||
'OUTPUT',
|
||||
'HIDE_HELP'],
|
||||
@ -22,7 +30,7 @@ with section("parse"):
|
||||
'DEPENDS': '*',
|
||||
'FORMAT': '*',
|
||||
'MODE': '*',
|
||||
'TARGET': '*'}},
|
||||
'TARGET': 1}},
|
||||
'write_compiler_detection_header': { 'flags' : [],
|
||||
'kwargs': { 'COMPILERS': '*',
|
||||
'FEATURES': '*',
|
||||
@ -48,11 +56,11 @@ with section("format"):
|
||||
|
||||
# If an argument group contains more than this many sub-groups (parg or kwarg
|
||||
# groups) then force it to a vertical layout.
|
||||
max_subgroups_hwrap = 2
|
||||
max_subgroups_hwrap = 3
|
||||
|
||||
# If a positional argument group contains more than this many arguments, then
|
||||
# force it to a vertical layout.
|
||||
max_pargs_hwrap = 6
|
||||
max_pargs_hwrap = 5
|
||||
|
||||
# If a cmdline positional group consumes more than this many lines without
|
||||
# nesting, then invalidate the layout (and nest)
|
||||
|
@ -24,37 +24,34 @@ 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" CACHE STRING "")
|
||||
set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE} -ggdb -pg" CACHE STRING "")
|
||||
set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -pg" CACHE STRING "")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -pg" CACHE STRING "")
|
||||
set(CMAKE_STATIC_LINKER_FLAGS_PROFILE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} -pg" CACHE STRING "")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS_PROFILE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} -pg" CACHE STRING "")
|
||||
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)
|
||||
elseif(CMAKE_CXX_COMPILER_IS_Intel)
|
||||
message("Set options for profiling with Intel C++")
|
||||
elseif(CMAKE_CXX_COMPILER_IS_MSVC)
|
||||
message("Set options for profiling with Visual Studio C++")
|
||||
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)
|
||||
set(PROFILE 1)
|
||||
elseif(CMAKE_BUILD_TYPE STREQUAL Debug)
|
||||
# В режиме отладки подробный вывод сообщений компилятора
|
||||
if(CMAKE_CXX_COMPILER_IS_Clang OR CMAKE_CXX_COMPILER_IS_GCC)
|
||||
string(APPEND CMAKE_C_FLAGS_DEBUG " -ggdb")
|
||||
string(APPEND CMAKE_CXX_FLAGS_DEBUG " -ggdb")
|
||||
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)
|
||||
endif()
|
||||
set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "Enable verbose build file generation." FORCE)
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "Enable output of compile commands during generation."
|
||||
FORCE)
|
||||
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)
|
||||
set(DEBUG 1)
|
||||
elseif(CMAKE_BUILD_TYPE STREQUAL Release)
|
||||
set(RELEASE 1)
|
||||
elseif(CMAKE_BUILD_TYPE STREQUAL None)
|
||||
# Режим None используется для статического анализа кода
|
||||
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)
|
||||
set(ANALYSIS 1)
|
||||
set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "Enable verbose build file generation." FORCE)
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "Enable output of compile commands during generation."
|
||||
FORCE)
|
||||
# set(USE_CLANG_TIDY ON CACHE BOOL "Use clang-tidy")
|
||||
# set(USE_CPPCHECK ON CACHE BOOL "Use cppcheck")
|
||||
set(USE_PVS_STUDIO ON CACHE BOOL "Use PVS-Studio")
|
||||
endif()
|
||||
|
@ -45,5 +45,6 @@ include(CMLibQtTranslation)
|
||||
include(CMLibToday)
|
||||
include(CMLibAuxilarySymlinks)
|
||||
include(CMLibConfigHPPGenerate)
|
||||
include(CMLibNinjaGeneratorHelper)
|
||||
include(CMLibCPack)
|
||||
include(CMLibUninstall)
|
||||
|
@ -31,7 +31,7 @@ function(add_common_library target)
|
||||
if(NOT SKIP_STATIC_LIBS)
|
||||
add_library(${target}_static STATIC $<TARGET_OBJECTS:${target}>)
|
||||
set_target_properties(${target}_static PROPERTIES OUTPUT_NAME ${OUTNAME} ARCHIVE_OUTPUT_DIRECTORY
|
||||
${CMAKE_INSTALL_LIBDIR})
|
||||
${CMAKE_INSTALL_LIBDIR})
|
||||
install(TARGETS ${target}_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
endif()
|
||||
|
||||
|
@ -11,7 +11,7 @@ function(common_target_properties target)
|
||||
get_target_property(__sources ${target} SOURCES)
|
||||
foreach(__src IN LISTS __sources)
|
||||
string(REGEX MATCH ".*/qrc_.*\\.cpp$" __qrc ${__src})
|
||||
if (__qrc)
|
||||
if(__qrc)
|
||||
set_property(SOURCE ${__qrc} PROPERTY COTIRE_EXCLUDED ON)
|
||||
endif()
|
||||
endforeach()
|
||||
|
@ -54,8 +54,8 @@ function(add_breathe target)
|
||||
configure_file(${INDEX_MD_FILE} ${WORK_DIR}/index.md @ONLY)
|
||||
file(GLOB MD_FILES ${CMAKE_SOURCE_DIR}/doc/breathe/*.md)
|
||||
if(MD_FILES)
|
||||
add_custom_command(TARGET ${target} PRE_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${MD_FILES} ${WORK_DIR})
|
||||
add_custom_command(TARGET ${target} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${MD_FILES} ${WORK_DIR})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@ -64,13 +64,12 @@ function(add_breathe target)
|
||||
configure_file(${INDEX_RST_FILE} ${WORK_DIR}/index.rst @ONLY)
|
||||
file(GLOB RST_FILES ${CMAKE_SOURCE_DIR}/doc/breathe/*.rst)
|
||||
if(RST_FILES)
|
||||
add_custom_command(TARGET ${target} PRE_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${RST_FILES} ${WORK_DIR})
|
||||
add_custom_command(TARGET ${target} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${RST_FILES} ${WORK_DIR})
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "CMLIB warning:")
|
||||
add_custom_target(${target} VERBATIM
|
||||
COMMENT " Breathe is not found. Skipping target ${target} build")
|
||||
add_custom_target(${target} VERBATIM COMMENT " Breathe is not found. Skipping target ${target} build")
|
||||
endif()
|
||||
endfunction()
|
||||
|
@ -37,7 +37,6 @@ function(add_doxygen target)
|
||||
COMMENT "Generating API documentation with Doxygen")
|
||||
else()
|
||||
message(STATUS "CMLIB warning:")
|
||||
add_custom_target(${target} VERBATIM
|
||||
COMMENT " Doxygen is not found. Skipping target ${target} build")
|
||||
add_custom_target(${target} VERBATIM COMMENT " Doxygen is not found. Skipping target ${target} build")
|
||||
endif()
|
||||
endfunction()
|
||||
|
@ -18,7 +18,7 @@ function(add_format_sources target)
|
||||
list(APPEND UNCRUSTIFY_OPTS -c ${CMAKE_SOURCE_DIR}/cmake/etc/uncrustify/default.cfg)
|
||||
endif()
|
||||
add_custom_target(format-sources-uncrustify-${target} COMMAND ${UNCRUSTIFY_EXE} ${UNCRUSTIFY_OPTS}
|
||||
${_sources})
|
||||
${_sources})
|
||||
add_dependencies(format-sources format-sources-uncrustify-${target})
|
||||
else()
|
||||
message(STATUS "CMLIB warning:")
|
||||
|
9
CMLibNinjaGeneratorHelper.cmake
Normal file
9
CMLibNinjaGeneratorHelper.cmake
Normal file
@ -0,0 +1,9 @@
|
||||
# Если выбран генератор Ninja, то в основном сборочном каталоге
|
||||
# создаётся файл Makefile, который обрабатывается командой make и
|
||||
# передаёт исполнение системе сборки ninja.
|
||||
# Таким образом можно выполнять команду make, даже если правила
|
||||
# сборки проекта сгенерированы для ninja.
|
||||
|
||||
if("${CMAKE_GENERATOR}" MATCHES "Ninja")
|
||||
file(WRITE ${CMAKE_BINARY_DIR}/Makefile ".PHONY: build\n%:\n\t@ninja \$@\nbuild:\n\t@ninja\n")
|
||||
endif()
|
@ -18,12 +18,12 @@ function(qt5_translation outfiles)
|
||||
set(_ts "${_base_name}_${_lang}.ts")
|
||||
set(_qm "${_base_name}_${_lang}.qm")
|
||||
list(APPEND _ts_list ${_output_dir}/${_ts})
|
||||
list(APPEND _l10n_names "${_base_name}_l10n_${_lang}")
|
||||
list(APPEND _l10n_names_list "${_base_name}_l10n_${_lang}")
|
||||
string(APPEND L10N_QRC_BODY "<file alias=\"${_qm}\">${CMAKE_BINARY_DIR}/${_qm}</file>\n")
|
||||
|
||||
add_custom_target(
|
||||
${_base_name}_l10n_${_lang} COMMAND ${Qt5_LUPDATE_EXECUTABLE} ${_sources} -ts ${_output_dir}/${_ts}
|
||||
-target-language ${_lang} DEPENDS ${_sources})
|
||||
-target-language ${_lang} DEPENDS ${_sources})
|
||||
|
||||
if(NOT EXISTS "${_output_dir}/${_ts}")
|
||||
add_custom_target(${_ts} DEPENDS ${_base_name}_l10n_${_lang})
|
||||
@ -39,7 +39,7 @@ function(qt5_translation outfiles)
|
||||
configure_file(${CMLIB_MODULE_DIR}/qrc/l10n.qrc.in ${CMAKE_BINARY_DIR}/${_base_name}_l10n.qrc)
|
||||
qt5_add_resources(${outfiles} ${CMAKE_BINARY_DIR}/${_base_name}_l10n.qrc)
|
||||
add_custom_target(${_base_name}_qrc DEPENDS ${_qrc})
|
||||
add_custom_target(${_base_name}_l10n DEPENDS ${_l10n_targets})
|
||||
add_custom_target(${_base_name}_l10n DEPENDS ${_l10n_names_list})
|
||||
if(NOT TARGET l10n)
|
||||
add_custom_target(l10n)
|
||||
endif()
|
||||
|
Reference in New Issue
Block a user