diff --git a/CMakeLists.txt b/CMakeLists.txt index b3155c0..6328eff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.0) -project(myx-cmake VERSION 0.4.8 LANGUAGES) +project(myx-cmake VERSION 0.5.0 LANGUAGES) include(GNUInstallDirs) file(WRITE ${CMAKE_SOURCE_DIR}/MyxCMake/MyxCMakeConfigVersion.cmake diff --git a/MyxCMake/modules/MyxCMakeAddSharedLibrary.cmake b/MyxCMake/modules/MyxCMakeAddSharedLibrary.cmake index 6ccb9a4..58dbbcc 100644 --- a/MyxCMake/modules/MyxCMakeAddSharedLibrary.cmake +++ b/MyxCMake/modules/MyxCMakeAddSharedLibrary.cmake @@ -5,6 +5,7 @@ function(myx_cmake_add_shared_library target) if(NOT BUILD_${_ctarget}_SHARED) return() endif() + get_target_property(__target_type ${target} TYPE) if(NOT __target_type STREQUAL OBJECT_LIBRARY) myx_cmake_message_error("MyxCMake: myx_cmake_add_shared_library needs target of type OBJECT_LIBRARY") @@ -18,13 +19,14 @@ function(myx_cmake_add_shared_library target) add_library(${target}-shared SHARED $) # cmake-format: off set_target_properties(${target}-shared - PROPERTIES OUTPUT_NAME ${__output_name} - VERSION ${PROJECT_VERSION} - SOVERSION ${PROJECT_VERSION_MAJOR} - LIBRARY_OUTPUT_DIRECTORY - ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) - install(TARGETS ${target}-shared - COMPONENT main - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + PROPERTIES + OUTPUT_NAME ${__output_name} + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_VERSION_MAJOR} + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) + install(TARGETS + ${target}-shared + COMPONENT main + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) # cmake-format: on endfunction() diff --git a/MyxCMake/modules/MyxCMakeAddStaticLibrary.cmake b/MyxCMake/modules/MyxCMakeAddStaticLibrary.cmake index 1c619a9..95478f0 100644 --- a/MyxCMake/modules/MyxCMakeAddStaticLibrary.cmake +++ b/MyxCMake/modules/MyxCMakeAddStaticLibrary.cmake @@ -5,6 +5,7 @@ function(myx_cmake_add_static_library target) if(NOT BUILD_${_ctarget}_STATIC) return() endif() + get_target_property(__target_type ${target} TYPE) if(NOT __target_type STREQUAL OBJECT_LIBRARY) myx_cmake_message_error("MyxCMake: myx_cmake_add_static_library needs target of type OBJECT_LIBRARY") @@ -18,10 +19,12 @@ function(myx_cmake_add_static_library target) add_library(${target}-static STATIC $) # cmake-format: off set_target_properties(${target}-static - PROPERTIES OUTPUT_NAME ${__output_name} - ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) - install(TARGETS ${target}-static - COMPONENT static - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + PROPERTIES + OUTPUT_NAME ${__output_name} + ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) + install(TARGETS + ${target}-static + COMPONENT static + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) # cmake-format: on endfunction() diff --git a/MyxCMake/modules/MyxCMakeBuildTypes.cmake b/MyxCMake/modules/MyxCMakeBuildTypes.cmake index 075a104..7191e18 100644 --- a/MyxCMake/modules/MyxCMakeBuildTypes.cmake +++ b/MyxCMake/modules/MyxCMakeBuildTypes.cmake @@ -2,12 +2,12 @@ cmake_policy(PUSH) cmake_policy(SET CMP0057 NEW) # IN_LIST operator option(MYX_CMAKE_ENABLE_WARNING_FLAGS "Enable autodetected warning flags" ON) -set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL - "Enable generation of compile_commands.json." FORCE) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON + CACHE BOOL "Enable generation of compile_commands.json" FORCE) # Добавление конфигурации для профилирования if(CMAKE_CONFIGURATION_TYPES) - if(NOT "Profile" IN_LIST CMAKE_CONFIGURATION_TYPES) + if(NOT Profile IN_LIST CMAKE_CONFIGURATION_TYPES) list(APPEND CMAKE_CONFIGURATION_TYPES Profile) endif() else() @@ -49,8 +49,8 @@ if(CMAKE_BUILD_TYPE STREQUAL Profile) 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_VERBOSE_MAKEFILE ON + CACHE BOOL "Enable generation of verbose build scripts." FORCE) elseif(CMAKE_BUILD_TYPE STREQUAL Debug) # В режиме отладки подробный вывод сообщений компилятора if(CMAKE_CXX_COMPILER_IS_CLANG OR CMAKE_CXX_COMPILER_IS_GCC) @@ -68,15 +68,15 @@ elseif(CMAKE_BUILD_TYPE STREQUAL Debug) CACHE STRING "" FORCE) endif() endif() - set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL - "Enable generation of verbose build scripts." FORCE) + set(CMAKE_VERBOSE_MAKEFILE ON + CACHE BOOL "Enable generation of verbose build scripts." FORCE) elseif(CMAKE_BUILD_TYPE STREQUAL Release) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${MYX_CMAKE_DETECTED_CXX_FLAGS}" - CACHE STRING "" FORCE) + CACHE STRING "" FORCE) elseif(CMAKE_BUILD_TYPE STREQUAL None) # Режим None используется для статического анализа кода - set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL - "Enable generation of verbose build scripts." FORCE) + set(CMAKE_VERBOSE_MAKEFILE ON + CACHE BOOL "Enable generation of verbose build scripts." FORCE) endif() unset(_gcc_debug_flags) diff --git a/MyxCMake/modules/MyxCMakeCPack.cmake b/MyxCMake/modules/MyxCMakeCPack.cmake index 9149a90..dc9925c 100644 --- a/MyxCMake/modules/MyxCMakeCPack.cmake +++ b/MyxCMake/modules/MyxCMakeCPack.cmake @@ -24,23 +24,23 @@ set(CPACK_SOURCE_PACKAGE_FILE_NAME "${MYX_CMAKE_PROJECT_NAME_LOWER}-${CPACK_PACK # Список масок для исключения из архива исходных текстов set(CPACK_SOURCE_IGNORE_FILES - "${CPACK_SOURCE_IGNORE_FILES}" - "${CMAKE_BINARY_DIR}" - "^${CMAKE_SOURCE_DIR}/.?build.?/" - "^${CMAKE_SOURCE_DIR}/.?output.?/" - "^${CMAKE_SOURCE_DIR}/files/var" - "^${CMAKE_SOURCE_DIR}/files/log" - "CMakeLists.txt.user.*" - ".*.autosave" - ".*.status" - "~$" - "\\\\.swp$") + "${CPACK_SOURCE_IGNORE_FILES}" + "${CMAKE_BINARY_DIR}" + "^${CMAKE_SOURCE_DIR}/.?build.?/" + "^${CMAKE_SOURCE_DIR}/.?output.?/" + "^${CMAKE_SOURCE_DIR}/files/var" + "^${CMAKE_SOURCE_DIR}/files/log" + "CMakeLists.txt.user.*" + ".*.autosave" + ".*.status" + "~$" + "\\\\.swp$") option(MYX_CMAKE_COMPACT_SOURCE_PACKAGE "Make compact source package" ON) if(MYX_CMAKE_COMPACT_SOURCE_PACKAGE) # Список масок для исключения из архива исходных текстов для более компактного архива set(CPACK_SOURCE_IGNORE_FILES - "${CPACK_SOURCE_IGNORE_FILES}" + ${CPACK_SOURCE_IGNORE_FILES} "\\\\.git" "/\\\\.git/" "/\\\\.gitlab-ci/" diff --git a/MyxCMake/modules/MyxCMakeCPackDeb.cmake b/MyxCMake/modules/MyxCMakeCPackDeb.cmake index 02243b9..380740e 100644 --- a/MyxCMake/modules/MyxCMakeCPackDeb.cmake +++ b/MyxCMake/modules/MyxCMakeCPackDeb.cmake @@ -29,24 +29,24 @@ if(MYX_CMAKE_CPACK_DEFAULT_SCHEME) # Правило формирования имени пакета и файла для компонента main set(CPACK_DEBIAN_MAIN_PACKAGE_NAME "${MYX_CMAKE_PROJECT_NAME_LOWER}") set(CPACK_DEBIAN_MAIN_FILE_NAME - ${MYX_CMAKE_PROJECT_NAME_LOWER}_${CPACK_PACKAGE_VERSION}_${CPACK_TARGET_ARCH}.deb) + ${MYX_CMAKE_PROJECT_NAME_LOWER}_${CPACK_PACKAGE_VERSION}_${CPACK_TARGET_ARCH}.deb) # Правило формирования имени пакета и файла для компонента dev set(CPACK_DEBIAN_DEV_PACKAGE_NAME "lib${MYX_CMAKE_PROJECT_NAME_LOWER}-dev") set(CPACK_DEBIAN_DEV_FILE_NAME - lib${MYX_CMAKE_PROJECT_NAME_LOWER}-dev_${CPACK_PACKAGE_VERSION}_${CPACK_TARGET_ARCH}.deb) + lib${MYX_CMAKE_PROJECT_NAME_LOWER}-dev_${CPACK_PACKAGE_VERSION}_${CPACK_TARGET_ARCH}.deb) # Правило формирования имени пакета и файла для компонента static set(CPACK_DEBIAN_STATIC_PACKAGE_NAME "lib${MYX_CMAKE_PROJECT_NAME_LOWER}-static-dev") set(CPACK_DEBIAN_STATIC_FILE_NAME - lib${MYX_CMAKE_PROJECT_NAME_LOWER}-static-dev_${CPACK_PACKAGE_VERSION}_${CPACK_TARGET_ARCH}.deb) + lib${MYX_CMAKE_PROJECT_NAME_LOWER}-static-dev_${CPACK_PACKAGE_VERSION}_${CPACK_TARGET_ARCH}.deb) set(CPACK_DEBIAN_STATIC_PACKAGE_DEPENDS "lib${MYX_CMAKE_PROJECT_NAME_LOWER}-dev") # Правило формирования имени пакета и файла для компонента doc set(CPACK_DEBIAN_DOC_PACKAGE_NAME "${MYX_CMAKE_PROJECT_NAME_LOWER}-doc") set(CPACK_DEBIAN_DOC_FILE_NAME - ${MYX_CMAKE_PROJECT_NAME_LOWER}-doc_${CPACK_PACKAGE_VERSION}_${CPACK_TARGET_ARCH}.deb) + ${MYX_CMAKE_PROJECT_NAME_LOWER}-doc_${CPACK_PACKAGE_VERSION}_${CPACK_TARGET_ARCH}.deb) foreach(component ${CPACK_COMPONENTS_ALL}) string(TOLOWER ${component} _cl) @@ -55,7 +55,7 @@ if(MYX_CMAKE_CPACK_DEFAULT_SCHEME) if(NOT ${_cl} STREQUAL main AND NOT ${_cl} STREQUAL dev AND NOT ${_cl} STREQUAL static) set(CPACK_DEBIAN_${_cu}_PACKAGE_NAME "${MYX_CMAKE_PROJECT_NAME_LOWER}-${_cl}") set(CPACK_DEBIAN_${_cu}_FILE_NAME - "${MYX_CMAKE_PROJECT_NAME_LOWER}-${_cl}_${CPACK_PACKAGE_VERSION}_${CPACK_TARGET_ARCH}.deb") + "${MYX_CMAKE_PROJECT_NAME_LOWER}-${_cl}_${CPACK_PACKAGE_VERSION}_${CPACK_TARGET_ARCH}.deb") endif() # Если в каталоге ${CMAKE_SOURCE_DIR}/cmake/deb/${_cl} находятся сценарии сопровождающего diff --git a/MyxCMake/modules/MyxCMakeCodeAnalyzeClangCheck.cmake b/MyxCMake/modules/MyxCMakeCodeAnalyzeClangCheck.cmake index 150f0e8..1006ef3 100644 --- a/MyxCMake/modules/MyxCMakeCodeAnalyzeClangCheck.cmake +++ b/MyxCMake/modules/MyxCMakeCodeAnalyzeClangCheck.cmake @@ -12,7 +12,7 @@ unset(CLANG_CHECK_NAMES) function(myx_cmake_analyze_clang_check target) if(CLANG_CHECK_EXE) - set(_args --analyze --extra-arg="-Wno-unknown-warning-option") + set(_args --analyze --extra-arg=-Wno-unknown-warning-option) get_target_property(__sources ${target} SOURCES) list(FILTER __sources EXCLUDE REGEX "qrc_.*\\.cpp$") list(FILTER __sources EXCLUDE REGEX "moc_.*\\.cpp$") @@ -24,8 +24,9 @@ function(myx_cmake_analyze_clang_check target) if(NOT TARGET myx-cmake-analyze-clang-check) add_custom_target(myx-cmake-analyze-clang-check) endif() - add_custom_target(${target}-analyze-clang-check WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - COMMAND ${CLANG_CHECK_EXE} ${_args} -p ${CMAKE_BINARY_DIR} ${__sources}) + add_custom_target(${target}-analyze-clang-check + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + COMMAND ${CLANG_CHECK_EXE} ${_args} -p ${CMAKE_BINARY_DIR} ${__sources}) add_dependencies(${target}-analyze-clang-check ${target}) add_dependencies(myx-cmake-analyze-clang-check ${target}-analyze-clang-check) else() diff --git a/MyxCMake/modules/MyxCMakeCodeAnalyzeClangTidy.cmake b/MyxCMake/modules/MyxCMakeCodeAnalyzeClangTidy.cmake index ab2535c..c1885fe 100644 --- a/MyxCMake/modules/MyxCMakeCodeAnalyzeClangTidy.cmake +++ b/MyxCMake/modules/MyxCMakeCodeAnalyzeClangTidy.cmake @@ -24,8 +24,9 @@ function(myx_cmake_analyze_clang_tidy target) if(NOT TARGET myx-cmake-analyze-clang-tidy) add_custom_target(myx-cmake-analyze-clang-tidy) endif() - add_custom_target(${target}-analyze-clang-tidy WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - COMMAND ${CLANG_TIDY_EXE} ${_args} -p ${CMAKE_BINARY_DIR} ${__sources}) + add_custom_target(${target}-analyze-clang-tidy + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + COMMAND ${CLANG_TIDY_EXE} ${_args} -p ${CMAKE_BINARY_DIR} ${__sources}) add_dependencies(${target}-analyze-clang-tidy ${target}) add_dependencies(myx-cmake-analyze-clang-tidy ${target}-analyze-clang-tidy) else() diff --git a/MyxCMake/modules/MyxCMakeCodeAnalyzeClazy.cmake b/MyxCMake/modules/MyxCMakeCodeAnalyzeClazy.cmake index ba5f695..72f5d8f 100644 --- a/MyxCMake/modules/MyxCMakeCodeAnalyzeClazy.cmake +++ b/MyxCMake/modules/MyxCMakeCodeAnalyzeClazy.cmake @@ -19,21 +19,22 @@ function(myx_cmake_analyze_clazy target) list(FILTER __sources EXCLUDE REGEX "qrc_.*\\.cpp$") list(FILTER __sources EXCLUDE REGEX "moc_.*\\.cpp$") list(FILTER __sources EXCLUDE REGEX "ui_.*\\.h$") - set(_args -checks=${ARG_CHECKS} -extra-arg="-Wno-unknown-warning-option" + set(_args -checks=${ARG_CHECKS} + -extra-arg=-Wno-unknown-warning-option -export-fixes=clazy-fixes-file.yaml) if(NOT TARGET myx-cmake-analyze-clazy) add_custom_target(myx-cmake-analyze-clazy) endif() if(MYX_CMAKE_CLAZY_FIX) - add_custom_target( - ${target}-analyze-clazy + add_custom_target(${target}-analyze-clazy WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMAND ${CLAZY_EXE} ${_args} -p ${CMAKE_BINARY_DIR} ${__sources} COMMAND ${CLANG_APPLY_REPLACEMENTS_EXE} ${CMAKE_BINARY_DIR}) else() - add_custom_target(${target}-analyze-clazy WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - COMMAND ${CLAZY_EXE} ${_args} -p ${CMAKE_BINARY_DIR} ${__sources}) + add_custom_target(${target}-analyze-clazy + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + COMMAND ${CLAZY_EXE} ${_args} -p ${CMAKE_BINARY_DIR} ${__sources}) endif() add_dependencies(${target}-analyze-clazy ${target}) add_dependencies(myx-cmake-analyze-clazy ${target}-analyze-clazy) diff --git a/MyxCMake/modules/MyxCMakeCodeCoverage.cmake b/MyxCMake/modules/MyxCMakeCodeCoverage.cmake index 71ed72b..e9f1ae1 100644 --- a/MyxCMake/modules/MyxCMakeCodeCoverage.cmake +++ b/MyxCMake/modules/MyxCMakeCodeCoverage.cmake @@ -23,8 +23,7 @@ function(myx_cmake_code_coverage target) endif() if(LCOV_EXE) - add_custom_target( - ${target}-coverage + add_custom_target(${target}-coverage WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMAND ${LCOV_EXE} --test-name ${target} --output "${target}.lcov" --capture --no-external @@ -35,11 +34,9 @@ function(myx_cmake_code_coverage target) add_dependencies(${target}-coverage ${target}) if(GENHTML_EXE) - add_custom_target( - ${target}-coverage-report + add_custom_target(${target}-coverage-report WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - COMMAND ${GENHTML_EXE} --output-directory "${target}-coverage-html" - "${target}.lcov") + COMMAND ${GENHTML_EXE} --output-directory "${target}-coverage-html" "${target}.lcov") add_dependencies(${target}-coverage-report ${target}-coverage) endif() endif() diff --git a/MyxCMake/modules/MyxCMakeCommon.cmake b/MyxCMake/modules/MyxCMakeCommon.cmake index 7f2b2bd..ca700d7 100644 --- a/MyxCMake/modules/MyxCMakeCommon.cmake +++ b/MyxCMake/modules/MyxCMakeCommon.cmake @@ -5,8 +5,7 @@ include(MyxCMakeColoredMessages) include(MyxCMakeCheckPaths) link_directories(${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) -set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS - ${CMAKE_CXX_SOURCE_FILE_EXTENSIONS};tpp;tcc) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${CMAKE_CXX_SOURCE_FILE_EXTENSIONS};tpp;tcc) set_property(GLOBAL PROPERTY USE_FOLDERS ON) include(MyxCMakeProjectVersion) diff --git a/MyxCMake/modules/MyxCMakeFormatSources.cmake b/MyxCMake/modules/MyxCMakeFormatSources.cmake index f6a7674..92de281 100644 --- a/MyxCMake/modules/MyxCMakeFormatSources.cmake +++ b/MyxCMake/modules/MyxCMakeFormatSources.cmake @@ -37,15 +37,16 @@ endif() function(myx_cmake_format_sources target) + if(NOT TARGET myx-cmake-format-sources) + add_custom_target(myx-cmake-format-sources) + endif() + if(UNCRUSTIFY_EXE) get_target_property(__sources ${target} SOURCES) list(FILTER __sources EXCLUDE REGEX "qrc_.*\\.cpp$") list(FILTER __sources EXCLUDE REGEX "moc_.*\\.cpp$") list(FILTER __sources EXCLUDE REGEX "ui_.*\\.h$") - if(NOT TARGET myx-cmake-format-sources) - add_custom_target(myx-cmake-format-sources) - endif() if(NOT TARGET myx-cmake-format-sources-check) add_custom_target(myx-cmake-format-sources-check) endif() diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +9 diff --git a/debian/control b/debian/control index 48bd481..22b8af3 100644 --- a/debian/control +++ b/debian/control @@ -2,7 +2,7 @@ Source: myx-cmake Section: utils Priority: optional Maintainer: Andrey Astafyev -Build-Depends: debhelper (>= 9), debhelper-compat (= 9), cmake +Build-Depends: debhelper (>= 9), cmake Standards-Version: 4.2.0 Package: myx-cmake