myx update
This commit is contained in:
@@ -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)
|
||||
|
@@ -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)
|
||||
|
@@ -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)
|
||||
|
30
cmake/myx/lib/macro/GTest.cmake
Normal file
30
cmake/myx/lib/macro/GTest.cmake
Normal 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()
|
||||
|
40
cmake/myx/lib/macro/QTest.cmake
Normal file
40
cmake/myx/lib/macro/QTest.cmake
Normal 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()
|
||||
|
Reference in New Issue
Block a user