myx update

This commit is contained in:
2023-02-17 14:36:44 +03:00
parent 549bc0da8f
commit 947ad070f5
23 changed files with 264 additions and 113 deletions

View File

@@ -1,33 +1,34 @@
include_guard(GLOBAL)
# based on https://github.com/bluescarni/yacma
# Добавление флага к списку используемых после проверки
# возможности его использования текущим компилятором
# Основано на https://github.com/bluescarni/yacma
include(CheckCXXCompilerFlag)
macro(check_enable_cxx_compiler_flag flag)
macro(check_enable_cxx_compiler_flag FLAG)
set(options)
set(oneValueArgs TARGET)
set(multiValueArgs)
cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
set(CMAKE_REQUIRED_QUIET TRUE)
check_cxx_compiler_flag("${flag}" check_cxx_flag)
check_cxx_compiler_flag("${FLAG}" check_cxx_flag)
unset(CMAKE_REQUIRED_QUIET)
if(check_cxx_flag)
myx_message_notice("'${flag}': flag is supported.")
myx_message_notice("'${FLAG}': flag is supported.")
if(ARG_TARGET)
target_compile_options(${ARG_TARGET} PUBLIC ${flag})
target_compile_options(${ARG_TARGET} PUBLIC ${FLAG})
else()
add_compile_options(${flag})
add_compile_options(${FLAG})
endif()
else()
myx_message_status("'${flag}': flag is NOT supported.")
myx_message_status("'${FLAG}': flag is NOT supported.")
endif()
unset(check_cxx_flag CACHE)
foreach(iter IN LISTS oneValueArgs multiValueArgs)
unset(ARG_${iter})
foreach(__iter IN LISTS oneValueArgs multiValueArgs)
unset(ARG_${__iter})
endforeach()
unset(ARG_UNPARSED_ARGUMENTS)
unset(multiValueArgs)

View File

@@ -1,11 +1,13 @@
include_guard(GLOBAL)
macro(myx_create_symlink original linkname)
if(UNIX AND (NOT EXISTS ${linkname}))
# Создание символических ссылок
macro(myx_create_symlink ORIGINAL_FILENAME LINKNAME)
if(UNIX AND (NOT EXISTS ${LINKNAME}))
if(${CMAKE_VERSION} VERSION_LESS "3.14.0")
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${original} ${linkname})
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
${ORIGINAL_FILENAME} ${LINKNAME})
else()
file(CREATE_LINK ${original} ${linkname} SYMBOLIC)
file(CREATE_LINK ${ORIGINAL_FILENAME} ${LINKNAME} SYMBOLIC)
endif()
endif()
endmacro(myx_create_symlink original linkname)
endmacro(myx_create_symlink ORIGINAL_FILENAME LINKNAME)

View File

@@ -24,8 +24,8 @@ macro(myx_find_required_packages)
endforeach()
endif()
foreach(iter IN LISTS oneValueArgs multiValueArgs)
unset(ARG_${iter})
foreach(__iter IN LISTS oneValueArgs multiValueArgs)
unset(ARG_${__iter})
endforeach()
unset(ARG_UNPARSED_ARGUMENTS)
unset(multiValueArgs)

View File

@@ -0,0 +1,30 @@
include_guard(GLOBAL)
macro(myx_add_gtest TARGET_NAME)
set(options)
set(oneValueArgs)
set(multiValueArgs)
cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
add_executable(${TARGET_NAME} ${ARG_UNPARSED_ARGUMENTS})
find_package(GTest)
if(GTest_FOUND)
target_link_libraries(${TARGET_NAME} PRIVATE GTest::GTest GTest::Main)
else()
if((NOT TARGET gtest) AND (NOT TARGET gtest_main))
add_subdirectory(/usr/src/googletest/googletest ${CMAKE_BINARY_DIR}/gtest)
endif()
target_link_libraries(${TARGET_NAME} PRIVATE gtest gtest_main)
endif()
add_test(NAME ${TARGET_NAME} COMMAND ${TARGET_NAME})
foreach(__iter IN LISTS oneValueArgs multiValueArgs)
unset(ARG_${__iter})
endforeach()
unset(ARG_UNPARSED_ARGUMENTS)
unset(multiValueArgs)
unset(oneValueArgs)
unset(options)
endmacro()

View File

@@ -0,0 +1,40 @@
include_guard(GLOBAL)
macro(myx_add_qtest TARGET_NAME)
set(options)
set(oneValueArgs)
set(multiValueArgs)
cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
find_package(Qt5 COMPONENTS Core Test REQUIRED)
if(NOT Qt5Test_FOUND)
myx_message_fatal_error("Qt testing framework is not found")
return()
endif()
foreach(filename ${ARG_UNPARSED_ARGUMENTS})
get_filename_component(basename ${filename} NAME_WE)
list(APPEND cpps "${basename}.cpp")
list(APPEND hpps "${basename}.hpp")
qt5_wrap_cpp(moc "${basename}.hpp")
list(APPEND mocs "${moc}")
endforeach()
add_executable(${TARGET_NAME} ${mocs} ${cpps} ${hpps})
target_link_libraries(${TARGET_NAME} Qt5::Core Qt5::Test)
add_test(NAME ${TARGET_NAME} COMMAND ${TARGET_NAME})
unset(cpps)
unset(hpps)
unset(moc)
unset(mocs)
foreach(__iter IN LISTS oneValueArgs multiValueArgs)
unset(ARG_${__iter})
endforeach()
unset(ARG_UNPARSED_ARGUMENTS)
unset(multiValueArgs)
unset(oneValueArgs)
unset(options)
endmacro()