myx update

This commit is contained in:
Andrei Astafev 2022-10-20 13:32:40 +03:00
parent a8858d15a5
commit 0cde545d89
6 changed files with 21 additions and 15 deletions

View File

@ -1,4 +1,4 @@
set(MYX_CMAKE_PACKAGE_VERSION "2.0.31") set(MYX_CMAKE_PACKAGE_VERSION "2.0.32")
if(MYX_CMAKE_PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) if(MYX_CMAKE_PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
set(PACKAGE_VERSION_COMPATIBLE FALSE) set(PACKAGE_VERSION_COMPATIBLE FALSE)
else() else()

View File

@ -50,8 +50,7 @@ function(myx_add_interface_library TARGET_NAME)
# Вызов стандартной функции `add_library()` # Вызов стандартной функции `add_library()`
if(${CMAKE_VERSION} VERSION_LESS "3.19.0") if(${CMAKE_VERSION} VERSION_LESS "3.19.0")
add_library(${TARGET_NAME} INTERFACE) add_library(${TARGET_NAME} INTERFACE)
# TODO target_sources(${TARGET_NAME} INTERFACE $<BUILD_INTERFACE:${ARG_HEADERS}>)
target_sources(${TARGET_NAME} INTERFACE ${ARG_HEADERS})
else() else()
add_library(${TARGET_NAME} INTERFACE ${ARG_HEADERS}) add_library(${TARGET_NAME} INTERFACE ${ARG_HEADERS})
endif() endif()
@ -63,14 +62,16 @@ function(myx_add_interface_library TARGET_NAME)
if(ARG_LINK_LIBRARIES) if(ARG_LINK_LIBRARIES)
target_link_libraries(${TARGET_NAME} INTERFACE ${ARG_LINK_LIBRARIES}) target_link_libraries(${TARGET_NAME} INTERFACE ${ARG_LINK_LIBRARIES})
foreach(__lib ${ARG_LINK_LIBRARIES}) if(${CMAKE_VERSION} VERSION_GREATER "3.15.0")
if(TARGET ${__lib}) foreach(__lib ${ARG_LINK_LIBRARIES})
install( if(TARGET ${__lib})
TARGETS ${__lib} install(
EXPORT ${TARGET_NAME}Targets TARGETS ${__lib}
COMPONENT DEV) EXPORT ${TARGET_NAME}Targets
endif() COMPONENT DEV)
endforeach() endif()
endforeach()
endif()
endif() endif()
# Библиотека, состоящая только из заголовочных файлов не требует сборки. # Библиотека, состоящая только из заголовочных файлов не требует сборки.

View File

@ -87,7 +87,11 @@ function(myx_qt5_target_setup TARGET_NAME)
target_sources(${TARGET_NAME} PRIVATE ${qrc_l10n}) target_sources(${TARGET_NAME} PRIVATE ${qrc_l10n})
endif() endif()
unset(tr) unset(tr)
target_sources(${TARGET_NAME} PRIVATE ${ARG_PUBLIC_MOC} ${ARG_PRIVATE_MOC} ${moc_cpp} ${ui_h} ${qrc_cpp}) if(target_type STREQUAL "INTERFACE_LIBRARY")
target_sources(${TARGET_NAME} INTERFACE ${ARG_PUBLIC_MOC} ${ARG_PRIVATE_MOC} ${moc_cpp} ${ui_h} ${qrc_cpp})
else()
target_sources(${TARGET_NAME} PRIVATE ${ARG_PUBLIC_MOC} ${ARG_PRIVATE_MOC} ${moc_cpp} ${ui_h} ${qrc_cpp})
endif()
# Установка публичных заголовочных файлов # Установка публичных заголовочных файлов
if(PROJECT_IS_TOP_LEVEL) if(PROJECT_IS_TOP_LEVEL)

View File

@ -52,4 +52,5 @@ function(myx_generate_git_info_header TARGET_NAME BASE_FILENAME)
set_property(TARGET ${TARGET_NAME} APPEND PROPERTY PRIVATE_HEADER_FILES ${__filename}) set_property(TARGET ${TARGET_NAME} APPEND PROPERTY PRIVATE_HEADER_FILES ${__filename})
target_sources(${TARGET_NAME} PRIVATE ${__filename}) target_sources(${TARGET_NAME} PRIVATE ${__filename})
add_dependencies(${TARGET_NAME} ${TARGET_NAME}-git-info-header)
endfunction() endfunction()

View File

@ -47,7 +47,7 @@ function(myx_uncrustify TARGET_NAME)
# Динамически сгенерированные файлы исключаются # Динамически сгенерированные файлы исключаются
get_target_property(__target_type ${TARGET_NAME} TYPE) get_target_property(__target_type ${TARGET_NAME} TYPE)
if(${__target_type} STREQUAL "INTERFACE_LIBRARY") if((${__target_type} STREQUAL "INTERFACE_LIBRARY") AND (${CMAKE_VERSION} VERSION_LESS "3.15.0"))
get_target_property(__s1 ${TARGET_NAME} INTERFACE_SOURCES) get_target_property(__s1 ${TARGET_NAME} INTERFACE_SOURCES)
if(__s1) if(__s1)
list(APPEND __all_sources ${__s1}) list(APPEND __all_sources ${__s1})

View File

@ -20,11 +20,11 @@ if(ENV{MYX_CMAKE_DIR})
set(MYX_CMAKE_DIR $ENV{MYX_CMAKE_DIR}) set(MYX_CMAKE_DIR $ENV{MYX_CMAKE_DIR})
endif() endif()
if(MYX_CMAKE_DIR) if(MYX_CMAKE_DIR)
find_package(MyxCMake 2.0.31 REQUIRED CONFIG PATHS ${MYX_CMAKE_DIR} NO_DEFAULT_PATH) find_package(MyxCMake 2.0.32 REQUIRED CONFIG PATHS ${MYX_CMAKE_DIR} NO_DEFAULT_PATH)
myx_message_notice("=== MyxCMake directory: ${MyxCMake_CONFIG} ===") myx_message_notice("=== MyxCMake directory: ${MyxCMake_CONFIG} ===")
else() else()
if(MYX_CMAKE_USE_SYSTEM) if(MYX_CMAKE_USE_SYSTEM)
find_package(MyxCMake 2.0.31 REQUIRED) find_package(MyxCMake 2.0.32 REQUIRED)
myx_message_notice("=== MyxCMake directory: ${MyxCMake_CONFIG} ===") myx_message_notice("=== MyxCMake directory: ${MyxCMake_CONFIG} ===")
else() else()
include(${PROJECT_SOURCE_DIR}/cmake/myx/MyxCMakeConfig.cmake) include(${PROJECT_SOURCE_DIR}/cmake/myx/MyxCMakeConfig.cmake)