From aad94b045c154298b96b89dd37e691197f6bfae1 Mon Sep 17 00:00:00 2001 From: Mathias Hasselmann Date: Sat, 7 Sep 2024 23:11:29 +0200 Subject: [PATCH] Ensure targets have consistent build options --- CMakeLists.txt | 27 +++++++++++++++++++++++++++ http/CMakeLists.txt | 9 +-------- mdns/CMakeLists.txt | 21 +++------------------ qnc/CMakeLists.txt | 12 +----------- tests/auto/CMakeLists.txt | 24 +++++++++++++----------- 5 files changed, 45 insertions(+), 48 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7f1ac80..b01f595 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,11 @@ if (CMAKE_CXX_COMPILER_ID MATCHES GNU|Clang) -Werror=switch -Werror=uninitialized -Werror=unused) endif() +set(QNC_COMPILE_DEFINITIONS + -DQT_DISABLE_DEPRECATED_BEFORE=0x050f00 + -DQT_NO_CAST_FROM_ASCII=1 + -DQT_NO_URL_CAST_FROM_STRING=1) + set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) @@ -47,6 +52,28 @@ else() endif() endif() +function(qnc_add_library NAME) + qt_add_library(NAME ${ARGN}) + + target_include_directories("${NAME}" PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) + target_compile_definitions("${NAME}" PRIVATE ${QNC_COMPILE_DEFINITIONS}) + target_compile_options ("${NAME}" PRIVATE ${QNC_COMPILE_OPTIONS}) +endfunction() + +function(qnc_add_executable NAME) + cmake_parse_arguments(EXECUTABLE "" "TYPE" "" ${ARGN}) + qt_add_executable(NAME ${EXECUTABLE_UNPARSED_ARGUMENTS}) + + target_compile_definitions("${NAME}" PRIVATE ${QNC_COMPILE_DEFINITIONS}) + target_compile_options ("${NAME}" PRIVATE ${QNC_COMPILE_OPTIONS}) + + set_target_properties( + "${NAME}" PROPERTIES + MACOSX_BUNDLE "de.taschenorakel.qnc.${NAME}" + XCODE_PRODUCT_TYPE "com.apple.product-type.bundle.${EXECUTABLE_TYPE}" + ) +endfunction() + add_custom_target(metadata SOURCES LICENSE README.md) add_subdirectory(.github) diff --git a/http/CMakeLists.txt b/http/CMakeLists.txt index e5f3bb7..d848e4d 100644 --- a/http/CMakeLists.txt +++ b/http/CMakeLists.txt @@ -1,11 +1,4 @@ if (NOT IOS) # FIXME Figure out code signing on Github - add_executable(HttpCompressingServer compressingserver.cpp) - target_compile_options(HttpCompressingServer PRIVATE ${QNC_COMPILE_OPTIONS}) + qnc_add_executable(HttpCompressingServer TYPE tool compressingserver.cpp) target_link_libraries(HttpCompressingServer PUBLIC Qt::Network QtNetworkCrumbs::Zlib) - - set_target_properties( - HttpCompressingServer PROPERTIES - MACOSX_BUNDLE "de.taschenorakel.qnc.HttpCompressingServer" - XCODE_PRODUCT_TYPE "com.apple.product-type.bundle.unit-test" - ) endif() diff --git a/mdns/CMakeLists.txt b/mdns/CMakeLists.txt index 5768fb6..bd172cb 100644 --- a/mdns/CMakeLists.txt +++ b/mdns/CMakeLists.txt @@ -1,4 +1,4 @@ -add_library( +qcn_add_library( MDNSResolver STATIC mdnsmessage.cpp mdnsmessage.h @@ -6,30 +6,15 @@ add_library( mdnsresolver.h ) -target_include_directories(MDNSResolver PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_compile_options(MDNSResolver PRIVATE ${QNC_COMPILE_OPTIONS}) target_link_libraries(MDNSResolver PUBLIC QtNetworkCrumbs) -target_compile_definitions( - MDNSResolver PRIVATE - -DQT_DISABLE_DEPRECATED_BEFORE=0x050f00 - -DQT_NO_CAST_FROM_ASCII=1 - -DQT_NO_URL_CAST_FROM_STRING=1 -) if (NOT IOS) # FIXME Figure out code signing on Github - add_executable(MDNSResolverDemo mdnsresolverdemo.cpp) + qnc_add_executable(MDNSResolverDemo TYPE tool mdnsresolverdemo.cpp) target_link_libraries(MDNSResolverDemo PRIVATE MDNSResolver) - - set_target_properties( - MDNSResolverDemo PROPERTIES - MACOSX_BUNDLE "de.taschenorakel.qnc.MDNSResolverDemo" - XCODE_PRODUCT_TYPE "com.apple.product-type.bundle.unit-test" - ) endif() #if (WIN32) -# add_executable(WinDNSTest windnstest.cpp) -# target_compile_definitions(WinDNSTest PRIVATE -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP) +# qnc_add_executable(WinDNSTest TYPE tool windnstest.cpp) # target_link_libraries(WinDNSTest dnsapi.lib) #endif() diff --git a/qnc/CMakeLists.txt b/qnc/CMakeLists.txt index 13f1ff2..f0132ff 100644 --- a/qnc/CMakeLists.txt +++ b/qnc/CMakeLists.txt @@ -1,17 +1,7 @@ -add_library( +qnc_add_library( QtNetworkCrumbs STATIC qncliterals.h qncliterals.cpp ) -target_include_directories(QtNetworkCrumbs PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_compile_options(QtNetworkCrumbs PRIVATE ${QNC_COMPILE_OPTIONS}) target_link_libraries(QtNetworkCrumbs PUBLIC Qt::Network) - -target_compile_definitions( - QtNetworkCrumbs PRIVATE - -DQT_DISABLE_DEPRECATED_BEFORE=0x050f00 - -DQT_NO_CAST_FROM_ASCII=1 - -DQT_NO_URL_CAST_FROM_STRING=1 -) - diff --git a/tests/auto/CMakeLists.txt b/tests/auto/CMakeLists.txt index ae6a22a..3dbf958 100644 --- a/tests/auto/CMakeLists.txt +++ b/tests/auto/CMakeLists.txt @@ -6,18 +6,20 @@ else() unset(TEST_RUNNER) endif() -function(add_testcase NAME) - add_executable(${NAME} ${NAME}.cpp) - target_compile_options(${NAME} PRIVATE ${QNC_COMPILE_OPTIONS}) - target_link_libraries(${NAME} PRIVATE MDNSResolver Qt::Test) +function(add_testcase SOURCE_FILENAME) # [SOURCES...] + cmake_parse_arguments(TESTCASE "" "NAME" "LIBRARIES;SOURCES" ${ARGN}) - set_target_properties( - ${NAME} PROPERTIES - MACOSX_BUNDLE "de.taschenorakel.qnc.${NAME}" - XCODE_PRODUCT_TYPE "com.apple.product-type.bundle.unit-test") + if (NOT TESTCASE_NAME) + cmake_path(GET SOURCE_FILENAME STEM TESTCASE_NAME) + endif() - add_test(NAME ${NAME} COMMAND ${TEST_RUNNER} $) + list(PREPEND TESTCASE_SOURCES "${SOURCE_FILENAME}") + list(APPEND TESTCASE_SOURCES ${TESTCASE_UNPARSED_ARGUMENTS}) + + qnc_add_executable("${TESTCASE_NAME}" TYPE "unit-test" ${TESTCASE_SOURCES}) + target_link_libraries("${TESTCASE_NAME}" PRIVATE Qt::Test ${TESTCASE_LIBRARIES}) + add_test(NAME "${TESTCASE_NAME}" COMMAND "${TEST_RUNNER}" "$") endfunction() -add_testcase(tst_mdnsmessages) -add_testcase(tst_mdnsresolver) +add_testcase(tst_mdnsmessages.cpp LIBRARIES MDNSResolver) +add_testcase(tst_mdnsresolver.cpp LIBRARIES MDNSResolver)