Files
qt6-migration-pipeline/cmake/NGLMacros.cmake
T
torsten 8af436f09a Reduce compiler warnings: replace qAsConst with std::as_const and update event localPos() to position()
Replaced deprecated qAsConst usages in built modules and updated QMouseEvent::localPos() to position() per Qt6 deprecation guidance.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-14 22:44:14 +02:00

635 lines
19 KiB
CMake
Executable File

INCLUDE(GenerateExportHeader)
# Compatibility stubs for Qt5 CMake macros when Qt6 is used.
# These stubs allow configure to succeed; actual resource/ui generation should be addressed during source migration.
if(NOT COMMAND QT5_ADD_RESOURCES)
macro(QT5_ADD_RESOURCES _out)
set(${_out} "" PARENT_SCOPE)
endmacro()
endif()
if(NOT COMMAND QT5_ADD_BIG_RESOURCES)
macro(QT5_ADD_BIG_RESOURCES _out)
set(${_out} "" PARENT_SCOPE)
endmacro()
endif()
if(NOT COMMAND QT5_WRAP_UI)
macro(QT5_WRAP_UI)
# noop at configure time
endmacro()
endif()
if(NOT COMMAND QT5_WRAP_CPP)
macro(QT5_WRAP_CPP)
endmacro()
endif()
# NGL_WRAP_UI: ensure .ui files are added to source lists so CMake's AUTOUIC can process them
if(NOT COMMAND NGL_WRAP_UI)
macro(NGL_WRAP_UI _out)
# Append provided UI files to the given source list variable
set(_cur "${${_out}}")
foreach(_ui ${ARGN})
list(APPEND _cur ${_ui})
endforeach()
set(${_out} "${_cur}" PARENT_SCOPE)
endmacro()
endif()
SET(_default_build OFF)
IF(BUILD_ALL)
SET(_default_build ON)
ENDIF()
OPTION(BUILD_SV "Build and install Server software parts" ${_default_build})
OPTION(BUILD_AAR "Build and install AAR software parts" ${_default_build})
OPTION(BUILD_LTSCC "Build and install LTS CC Conf" OFF)
OPTION(BUILD_HLA "Build and install HLA Server software parts" OFF)
OPTION(BUILD_WS "Build and install Workstation software parts" ${_default_build})
OPTION(BUILD_TOOLSWS "Build and install TOOLS for WS" OFF)
OPTION(BUILD_TOOLSSV "Build and install TOOLS for SV" OFF)
OPTION(BUILD_DEP_TEST_EXECUTABLES "Build executables for created libs to check library dependencies" OFF)
OPTION(BUILD_TS_FILES "Regenerate ts-files for translations" OFF)
OPTION(BUILD_STATIC_LIBRARIES "Build all libraries as static libraries" OFF)
IF(BUILD_STATIC_LIBRARIES)
ADD_DEFINITIONS(-DBUILD_STATIC_LIBRARIES)
ENDIF()
SET(AAR_INSTALL_PATH "AAR")
SET(SV_INSTALL_PATH "SV")
SET(HLA_INSTALL_PATH "SV")
SET(DDS_INSTALL_PATH "SV")
SET(WS_INSTALL_PATH "WS")
SET(TOOLSWS_INSTALL_PATH "WS")
SET(TOOLSSV_INSTALL_PATH "SV")
IF(WIN32)
SET(INSTALL_DEFAULT_ARGS RUNTIME DESTINATION bin
LIBRARY DESTINATION bin
ARCHIVE DESTINATION lib COMPONENT Devel)
ELSE()
SET(INSTALL_DEFAULT_ARGS RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib COMPONENT Devel)
ENDIF()
SET(INSTALL_DEFAULT_ARGS_DEVEL RUNTIME DESTINATION bin COMPONENT Devel
LIBRARY DESTINATION lib COMPONENT Devel
ARCHIVE DESTINATION lib COMPONENT Devel)
SET(_components SV WS AAR TOOLSWS TOOLSSV HLA)
MACRO (NGL_GET_BUILDPARTS _args _buildopts)
SET(${_buildopts} "")
SET(_at_least_one_keyword_found OFF)
LIST(FIND ${_args} "ALL" _all)
IF (_all GREATER -1)
LIST(REMOVE_AT ${_args} ${_all})
SET(_at_least_one_keyword_found ON)
FOREACH(_component ${_components})
IF(BUILD_${_component})
LIST(APPEND ${_buildopts} ${_component})
ENDIF()
ENDFOREACH()
ELSE()
FOREACH(_component ${_components})
LIST(FIND ${_args} "${_component}" _idx)
IF(_idx GREATER -1)
LIST(REMOVE_AT ${_args} ${_idx})
SET(_at_least_one_keyword_found ON)
IF(BUILD_${_component})
LIST(APPEND ${_buildopts} ${_component})
ENDIF()
ENDIF()
ENDFOREACH()
ENDIF()
IF(NOT _at_least_one_keyword_found)
MESSAGE(FATAL_ERROR "No software component keyword (ALL/SV/WS) given!")
ENDIF()
ENDMACRO()
MACRO (NGL_PARSE_BUILDCOMPONENT_INTERNAL _args _properties _build_target)
NGL_GET_BUILDPARTS(${_args} _buildopts)
SET(${_build_target} OFF)
FOREACH(_component ${_components})
LIST(FIND _buildopts ${_component} _idx)
IF(_idx GREATER -1)
LIST(APPEND ${_properties} NGL_INSTALL_${_component} ON)
SET(${_build_target} ON)
ENDIF()
ENDFOREACH()
LIST(FIND ${_args} "NO_TRANSLATION" _no_i18n)
IF (_no_i18n GREATER -1)
LIST(REMOVE_AT ${_args} ${_no_i18n})
LIST(APPEND ${_properties} NO_TRANSLATION ON)
ENDIF ()
ENDMACRO()
MACRO(NGL_ADD_TRANSLATION output_location _qm_file_name _ts_file _qm_files)
GET_FILENAME_COMPONENT(_abs_FILE ${_ts_file} ABSOLUTE)
FILE(MAKE_DIRECTORY "${output_location}")
SET(qm "${output_location}/${_qm_file_name}.qm")
ADD_CUSTOM_COMMAND(OUTPUT ${qm}
COMMAND Qt5::lrelease
ARGS ${_abs_FILE} -qm ${qm}
DEPENDS ${_abs_FILE}
)
SET(${_qm_files} ${${_qm_files}} ${qm})
ENDMACRO()
MACRO (NGL_ADD_LIBRARY)
SET(_args ${ARGN})
IF(BUILD_STATIC_LIBRARIES)
LIST(FIND _args "SHARED" _is_shared)
IF(_is_shared GREATER -1)
LIST(REMOVE_AT _args ${_is_shared})
ENDIF()
ENDIF()
SET(_properties "")
SET(_build_target OFF)
NGL_PARSE_BUILDCOMPONENT_INTERNAL(_args _properties _build_target)
LIST(GET _args 0 _target_NAME)
IF(_build_target)
ADD_LIBRARY(${_args})
SET_TARGET_PROPERTIES(${_target_NAME} PROPERTIES ${_properties})
IF(NOT MSVC AND NOT USE_ASAN AND NOT USE_UBSAN)
SET_PROPERTY(TARGET ${_target_NAME} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--no-undefined")
ENDIF()
STRING(TOUPPER ${_target_NAME} _symbol)
STRING(REGEX REPLACE "[^_A-Za-z0-9]" "_" _symbol ${_symbol})
IF(BUILD_STATIC_LIBRARIES)
SET(_symbol "${_symbol}_EXPORT=")
TARGET_COMPILE_DEFINITIONS(${_target_NAME} PUBLIC ${_symbol})
ELSE()
GET_TARGET_PROPERTY(target_type ${_target_NAME} TYPE)
IF(target_type STREQUAL "SHARED_LIBRARY" OR
target_type STREQUAL "MODULE_LIBRARY")
SET(_symbol "MAKE_${_symbol}_LIB")
TARGET_COMPILE_DEFINITIONS(${_target_NAME} PRIVATE ${_symbol})
ENDIF()
ENDIF()
IF(BUILD_DEP_TEST_EXECUTABLES)
LIST(FIND _args "SHARED" _is_shared)
IF(_is_shared GREATER -1)
LIST(REMOVE_AT _args ${_is_shared})
LIST(REMOVE_ITEM _args "${_target_NAME}")
ADD_EXECUTABLE(${_target_NAME}_dep_test ${NGL_MODULE_DIR}/ngl_dep_test_main.cpp ${_args})
ENDIF()
ENDIF()
SET_PROPERTY(GLOBAL APPEND PROPERTY NGL_TS_TARGETS ${_target_NAME})
ENDIF()
ENDMACRO()
MACRO (NGL_ADD_LIBRARY2)
SET(_args ${ARGN})
IF(BUILD_STATIC_LIBRARIES)
LIST(FIND _args "SHARED" _is_shared)
IF(_is_shared GREATER -1)
LIST(REMOVE_AT _args ${_is_shared})
ENDIF()
ENDIF()
SET(_properties "")
SET(_build_target OFF)
NGL_PARSE_BUILDCOMPONENT_INTERNAL(_args _properties _build_target)
LIST(GET _args 0 _target_NAME)
IF(_build_target)
ADD_LIBRARY(${_args})
SET_TARGET_PROPERTIES(${_target_NAME} PROPERTIES ${_properties})
IF(NOT MSVC AND NOT USE_ASAN AND NOT USE_UBSAN)
SET_PROPERTY(TARGET ${_target_NAME} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--no-undefined")
ENDIF()
TARGET_INCLUDE_DIRECTORIES(${_target_NAME}
PUBLIC
${CMAKE_CURRENT_BINARY_DIR}/../
)
GET_PROPERTY(type TARGET ${_target_NAME} PROPERTY TYPE)
IF(NOT ${type} STREQUAL "STATIC_LIBRARY")
NGL_INSTALL_TARGET(${_target_NAME})
ENDIF()
IF(${type} STREQUAL "SHARED_LIBRARY" OR ${type} STREQUAL "MODULE_LIBRARY")
GENERATE_EXPORT_HEADER(${_target_NAME})
ENDIF()
IF(BUILD_DEP_TEST_EXECUTABLES)
IF(${type} STREQUAL "SHARED_LIBRARY")
LIST(REMOVE_ITEM _args "SHARED")
LIST(REMOVE_ITEM _args "${_target_NAME}")
ADD_EXECUTABLE(${_target_NAME}_dep_test ${NGL_MODULE_DIR}/ngl_dep_test_main.cpp ${_args})
ENDIF()
ENDIF()
SET_PROPERTY(GLOBAL APPEND PROPERTY NGL_TS_TARGETS ${_target_NAME})
ENDIF()
ENDMACRO()
MACRO (NGL_ADD_EXECUTABLE)
SET(_args ${ARGN})
SET(_properties "")
SET(_build_target OFF)
NGL_PARSE_BUILDCOMPONENT_INTERNAL(_args _properties _build_target)
LIST(GET _args 0 _target_NAME)
IF(_build_target)
ADD_EXECUTABLE(${_args})
SET_TARGET_PROPERTIES(${_target_NAME} PROPERTIES ${_properties})
SET_PROPERTY(GLOBAL APPEND PROPERTY NGL_TS_TARGETS ${_target_NAME})
ENDIF()
ENDMACRO()
MACRO(NGL_TARGET_INCLUDE_DIRECTORIES _target_NAME)
IF(TARGET ${_target_NAME})
TARGET_INCLUDE_DIRECTORIES(${_target_NAME} ${ARGN})
ENDIF()
ENDMACRO()
MACRO(NGL_TARGET_LINK_LIBRARIES _target_NAME)
IF(TARGET ${_target_NAME})
TARGET_LINK_LIBRARIES(${_target_NAME} ${ARGN})
IF(BUILD_DEP_TEST_EXECUTABLES)
GET_TARGET_PROPERTY(_type ${_target_NAME} TYPE)
IF("${_type}" STREQUAL "SHARED_LIBRARY")
TARGET_LINK_LIBRARIES(${_target_NAME}_dep_test ${ARGN} ${_target_NAME})
ENDIF()
ENDIF()
ENDIF()
ENDMACRO()
MACRO(NGL_ADD_INSTALL_PREFIX_INTERNAL _args prefix)
LIST(LENGTH ${_args} len)
SET(_ret_args "")
SET(_replace_next OFF)
FOREACH( _arg ${${_args}})
IF(${_arg} STREQUAL "DESTINATION")
SET(_replace_next ON)
LIST(APPEND _ret_args ${_arg})
ELSE()
IF(_replace_next)
LIST(APPEND _ret_args "${prefix}/${_arg}")
SET(_replace_next OFF)
ELSE()
LIST(APPEND _ret_args ${_arg})
ENDIF()
ENDIF()
ENDFOREACH()
SET(${_args} ${_ret_args})
ENDMACRO()
MACRO(_NGL_INSTALL_TARGET_internal _target_NAME)
SET(_args ${ARGN})
IF(TARGET ${_target_NAME})
FOREACH(_component ${_components})
GET_TARGET_PROPERTY(_install_component ${_target_NAME} NGL_INSTALL_${_component})
IF(_install_component)
SET(_my_args ${_args})
NGL_ADD_INSTALL_PREFIX_INTERNAL(_my_args ${${_component}_INSTALL_PATH})
INSTALL(TARGETS ${_target_NAME} ${_my_args})
ENDIF()
ENDFOREACH()
ENDIF()
ENDMACRO()
MACRO(NGL_INSTALL_TARGET _target_NAME)
SET(_args ${ARGN})
LIST(LENGTH _args len)
IF(${len} EQUAL 0)
SET(_args ${INSTALL_DEFAULT_ARGS})
ENDIF()
_NGL_INSTALL_TARGET_internal(${_target_NAME} ${_args})
ENDMACRO()
MACRO(NGL_INSTALL_TARGET_DEVEL _target_NAME)
IF (NOT BUILD_RPM)
SET(_args ${ARGN})
LIST(LENGTH _args len)
IF(${len} EQUAL 0)
SET(_args ${INSTALL_DEFAULT_ARGS_DEVEL})
ENDIF()
_NGL_INSTALL_TARGET_internal(${_target_NAME} ${_args})
ENDIF()
ENDMACRO()
MACRO(NGL_INSTALL)
SET(_args ${ARGN})
NGL_GET_BUILDPARTS(_args _buildopts)
FOREACH(_component ${_components})
LIST(FIND _buildopts ${_component} _idx)
IF(_idx GREATER -1)
SET(_my_args ${_args})
NGL_ADD_INSTALL_PREFIX_INTERNAL(_my_args ${${_component}_INSTALL_PATH})
INSTALL(${_my_args})
ENDIF()
ENDFOREACH()
ENDMACRO()
MACRO(NGL_SET_TARGET_PROPERTIES _target_NAME)
IF(TARGET ${_target_NAME})
SET_TARGET_PROPERTIES(${_target_NAME} ${ARGN})
ENDIF()
ENDMACRO()
MACRO(NGL_TARGET_COMPILE_DEFINITIONS _target_NAME)
IF(TARGET ${_target_NAME})
TARGET_COMPILE_DEFINITIONS(${_target_NAME} ${ARGN})
ENDIF()
ENDMACRO()
MACRO(NGL_ADD_COMPILE_FLAGS _target_NAME _property_value)
IF(TARGET ${_target_NAME})
SET_PROPERTY(TARGET ${_target_NAME} APPEND_STRING PROPERTY COMPILE_FLAGS " ${_property_value}")
ENDIF()
ENDMACRO()
MACRO(NGL_ADD_TEST)
IF(TARGET ${_target_NAME})
ADD_TEST(${_target_NAME} ${ARGN})
ENDIF()
ENDMACRO()
MACRO(NGL_CREATE_ASSISTANT_HELP type target_name language)
SET(_QHP_FILE_SRC "${CMAKE_CURRENT_SOURCE_DIR}/${language}.qhp")
SET(_QHP_FILE_BLD "${CMAKE_CURRENT_BINARY_DIR}/${language}/${language}.qhp")
SET(_QCH_FILE "${CMAKE_CURRENT_BINARY_DIR}/${language}/${language}.qch")
SET(_QHCP_FILE_SRC "${CMAKE_CURRENT_SOURCE_DIR}/${language}.qhcp")
SET(_QHCP_FILE_BLD "${CMAKE_CURRENT_BINARY_DIR}/${language}/${language}.qhcp")
SET(_QHC_FILE "${CMAKE_CURRENT_BINARY_DIR}/${language}/${language}.qhc")
SET(_file_list ${ARGN})
SET(_command_qhg qhelpgenerator-qt5)
SET(_command_qcg qcollectiongenerator-qt5)
ADD_CUSTOM_COMMAND(DEPENDS ${_file_list} ${_QHP_FILE_SRC} ${_QHCP_FILE_SRC}
COMMAND ${NGL_MODULE_DIR}/make_qt_help.py
ARGS ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/${language} ${language} ${_file_list}
COMMAND ${_command_qhg}
ARGS ${_QHP_FILE_BLD} -o ${_QCH_FILE}
COMMAND ${_command_qcg}
ARGS "${_QHCP_FILE_BLD}" -o "${_QHC_FILE}"
COMMAND ${CMAKE_COMMAND}
ARGS -E touch ${CMAKE_CURRENT_BINARY_DIR}/${language}_qch_dummy.c
OUTPUT "${_QHC_FILE}"
"${_QHCP_FILE_BLD}"
"${_QHP_FILE_BLD}"
"${_QCH_FILE}"
"${CMAKE_CURRENT_BINARY_DIR}/${language}_qch_dummy.c"
WORKING_DIRECTORY ${CMAKE_CURRENT_BUILD_DIR}
COMMENT "Generating Qt assistant help for language ${language}"
)
NGL_ADD_LIBRARY(${type} "${type}_${target_name}_${language}_qch_dummy" "${language}_qch_dummy")
NGL_INSTALL(${type} FILES "${_QCH_FILE}" "${_QHC_FILE}" DESTINATION help/${target_name}/)
ENDMACRO()
MACRO(NGL_ADD_TARGET_LINK targetName targetAbbr)
IF(TARGET ${targetName})
IF(NOT WIN32)
SET(cmake_operation create_symlink)
IF(WIN32)
SET(cmake_operation copy)
ENDIF(WIN32)
ADD_CUSTOM_COMMAND(TARGET ${targetName} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E remove -f ${targetAbbr}
COMMAND ${CMAKE_COMMAND} -E ${cmake_operation} ${targetName} ${targetAbbr}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/bin
)
ENDIF()
ENDIF()
ENDMACRO()
MACRO(ADD_INTERFACE_LIBRARY name_ header_ inc_path_)
SET(link_libs_ ${ARGN})
ADD_LIBRARY(${name_} INTERFACE)
TARGET_INCLUDE_DIRECTORIES(${name_}
INTERFACE
${inc_path_}
)
FOREACH(link_lib_ ${link_libs_})
TARGET_LINK_LIBRARIES(${name_}
INTERFACE
${link_lib_}
)
ENDFOREACH()
TARGET_SOURCES(${name_} INTERFACE ${header_})
ENDMACRO()
macro(NGL_COMPILE_RESOURCES output_qrc_objects)
get_property(ipo_active VARIABLE PROPERTY CMAKE_INTERPROCEDURAL_OPTIMIZATION)
if(CMAKE_VERSION VERSION_GREATER 3.8.99 AND Qt5Core_VERSION VERSION_GREATER 5.12.99 AND NOT WIN32 AND NOT ipo_active)
set(_QT5_INTERNAL_SCOPE ON)
set(options)
set(oneValueArgs)
set(multiValueArgs OPTIONS)
cmake_parse_arguments(_NGL_COMPILE_RESOURCES "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
set(qrc_files ${_NGL_COMPILE_RESOURCES_UNPARSED_ARGUMENTS})
set(rcc_options ${_NGL_COMPILE_RESOURCES_OPTIONS})
foreach(qrc_file ${qrc_files})
get_filename_component(qrc_object_file ${qrc_file} NAME_WE)
get_filename_component(qrc_filename ${qrc_file} ABSOLUTE)
set(qrc_header_file ${CMAKE_CURRENT_BINARY_DIR}/qrc_${qrc_object_file}_header.cpp)
set(qrc_object ${CMAKE_CURRENT_BINARY_DIR}/qrc_${qrc_object_file}.o)
_qt5_parse_qrc_file(${qrc_filename} _out_depends _rc_depends)
set_source_files_properties(${qrc_filename} PROPERTIES SKIP_AUTORCC ON)
add_custom_command(OUTPUT ${qrc_header_file}
COMMAND echo ">>> 1: Regenerating ${qrc_header_file}"
COMMAND ${Qt5Core_RCC_EXECUTABLE} ${rcc_options} --name ${qrc_object_file} --pass 1 --output ${qrc_header_file} ${qrc_filename}
DEPENDS ${qrc_filename} ${_rc_depends} "${_out_depends}"
VERBATIM)
add_custom_target(resources_${qrc_object_file} ALL DEPENDS ${qrc_header_file})
add_library(qrc_object_${qrc_object_file} OBJECT ${qrc_header_file})
add_dependencies(qrc_object_${qrc_object_file} resources_${qrc_object_file})
set_target_properties(qrc_object_${qrc_object_file} PROPERTIES AUTOMOC OFF)
set_target_properties(qrc_object_${qrc_object_file} PROPERTIES AUTOUIC OFF)
add_custom_command(OUTPUT ${qrc_object}
COMMAND echo ">>> 2: Regenerating ${qrc_object} with $<TARGET_OBJECTS:qrc_object_${qrc_object_file}>"
COMMAND ${Qt5Core_RCC_EXECUTABLE}
ARGS ${rcc_options} --name ${qrc_object_file} --pass 2 --temp $<TARGET_OBJECTS:qrc_object_${qrc_object_file}> --output ${qrc_object} ${qrc_filename}
DEPENDS qrc_object_${qrc_object_file} ${qrc_filename} ${qrc_header_file}
VERBATIM)
list(APPEND ${output_qrc_objects} ${qrc_object})
endforeach()
else()
QT5_ADD_RESOURCES(${output_qrc_objects} ${ARGN})
endif()
endmacro()
MACRO(NGL_ADD_BIG_RESOURCES)
GET_PROPERTY(ipo_active VARIABLE PROPERTY CMAKE_INTERPROCEDURAL_OPTIMIZATION)
IF(CMAKE_VERSION VERSION_GREATER 3.8.99 AND Qt5Core_VERSION VERSION_GREATER 5.12.99 AND NOT WIN32 AND NOT ipo_active)
QT5_ADD_BIG_RESOURCES(${ARGN})
ELSE()
QT5_ADD_RESOURCES(${ARGN})
ENDIF()
ENDMACRO()
MACRO(NGL_WRAP_UI)
QT5_WRAP_UI(${ARGN})
ENDMACRO()
MACRO(NGL_ADD_APP_ICON_INTERNAL _srcs icon)
IF(WIN32)
SET(_rc_file ${CMAKE_CURRENT_BINARY_DIR}/${target}_icon.rc)
FILE(WRITE ${_rc_file} "IDI_ICON1 ICON DISCARDABLE \"${icon}\"\n")
LIST(APPEND ${target} ${_rc_file})
SET_SOURCE_FILES_PROPERTIES(${_rc_file} PROPERTIES OBJECT_DEPENDS ${icon})
LIST(APPEND ${_srcs} ${_rc_file})
ENDIF()
ENDMACRO()
MACRO(NGL_ADD_APP_ICON target)
NGL_ADD_APP_ICON_INTERNAL(${target} "${CMAKE_SOURCE_DIR}/Lts/Common/LtsWidgets/resources/rde_icon_256.ico")
ENDMACRO()
MACRO(NGL_ADD_SVC_ICON target)
NGL_ADD_APP_ICON_INTERNAL(${target} "${CMAKE_SOURCE_DIR}/Lts/Common/LtsWidgets/resources/rde_icon_256.ico")
ENDMACRO()
MACRO(NGL_ADD_TOOL_ICON target)
SET(_args ${ARGN})
LIST(LENGTH _args len)
SET(_ico "rde_logo.ico")
IF (len EQUAL 1)
LIST(GET _args 0 _tool)
SET(_ico "rde_internal_${_tool}_logo_256x256.ico")
ENDIF()
NGL_ADD_APP_ICON_INTERNAL(${target} "${CMAKE_SOURCE_DIR}/Lts/Common/LtsWidgets/resources/${_ico}")
ENDMACRO()
macro(NGL_TEST_APPS_JSON target)
if(NOT BUILD_RPM AND TARGET ${target})
add_custom_command(
TARGET ${target}
PRE_BUILD
COMMAND $<TARGET_FILE:LtsAppDescriptorChecker>
ARGS ${CMAKE_CURRENT_SOURCE_DIR} resources/apps.json
VERBATIM)
if(jsonschema)
add_custom_command(
TARGET ${target}
POST_BUILD
COMMAND jsonschema
ARGS -i ${CMAKE_CURRENT_SOURCE_DIR}/resources/apps.json ${CMAKE_CURRENT_SOURCE_DIR}/../apps.schema.json
VERBATIM)
endif()
endif()
endmacro()