myx update

This commit is contained in:
Andrei Astafev 2022-10-20 13:33:03 +03:00
parent deb5b8eae0
commit 549bc0da8f
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)
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()

View File

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

View File

@ -87,7 +87,11 @@ function(myx_qt5_target_setup TARGET_NAME)
target_sources(${TARGET_NAME} PRIVATE ${qrc_l10n})
endif()
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)

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})
target_sources(${TARGET_NAME} PRIVATE ${__filename})
add_dependencies(${TARGET_NAME} ${TARGET_NAME}-git-info-header)
endfunction()

View File

@ -47,7 +47,7 @@ function(myx_uncrustify TARGET_NAME)
# Динамически сгенерированные файлы исключаются
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)
if(__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})
endif()
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} ===")
else()
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} ===")
else()
include(${PROJECT_SOURCE_DIR}/cmake/myx/MyxCMakeConfig.cmake)