Skip to content

Commit aad94b0

Browse files
committed
Ensure targets have consistent build options
1 parent 32098a9 commit aad94b0

File tree

5 files changed

+45
-48
lines changed

5 files changed

+45
-48
lines changed

CMakeLists.txt

+27
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ if (CMAKE_CXX_COMPILER_ID MATCHES GNU|Clang)
1212
-Werror=switch -Werror=uninitialized -Werror=unused)
1313
endif()
1414

15+
set(QNC_COMPILE_DEFINITIONS
16+
-DQT_DISABLE_DEPRECATED_BEFORE=0x050f00
17+
-DQT_NO_CAST_FROM_ASCII=1
18+
-DQT_NO_URL_CAST_FROM_STRING=1)
19+
1520
set(CMAKE_AUTOMOC ON)
1621
set(CMAKE_AUTORCC ON)
1722
set(CMAKE_AUTOUIC ON)
@@ -47,6 +52,28 @@ else()
4752
endif()
4853
endif()
4954

55+
function(qnc_add_library NAME)
56+
qt_add_library(NAME ${ARGN})
57+
58+
target_include_directories("${NAME}" PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
59+
target_compile_definitions("${NAME}" PRIVATE ${QNC_COMPILE_DEFINITIONS})
60+
target_compile_options ("${NAME}" PRIVATE ${QNC_COMPILE_OPTIONS})
61+
endfunction()
62+
63+
function(qnc_add_executable NAME)
64+
cmake_parse_arguments(EXECUTABLE "" "TYPE" "" ${ARGN})
65+
qt_add_executable(NAME ${EXECUTABLE_UNPARSED_ARGUMENTS})
66+
67+
target_compile_definitions("${NAME}" PRIVATE ${QNC_COMPILE_DEFINITIONS})
68+
target_compile_options ("${NAME}" PRIVATE ${QNC_COMPILE_OPTIONS})
69+
70+
set_target_properties(
71+
"${NAME}" PROPERTIES
72+
MACOSX_BUNDLE "de.taschenorakel.qnc.${NAME}"
73+
XCODE_PRODUCT_TYPE "com.apple.product-type.bundle.${EXECUTABLE_TYPE}"
74+
)
75+
endfunction()
76+
5077
add_custom_target(metadata SOURCES LICENSE README.md)
5178

5279
add_subdirectory(.github)

http/CMakeLists.txt

+1-8
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
11
if (NOT IOS) # FIXME Figure out code signing on Github
2-
add_executable(HttpCompressingServer compressingserver.cpp)
3-
target_compile_options(HttpCompressingServer PRIVATE ${QNC_COMPILE_OPTIONS})
2+
qnc_add_executable(HttpCompressingServer TYPE tool compressingserver.cpp)
43
target_link_libraries(HttpCompressingServer PUBLIC Qt::Network QtNetworkCrumbs::Zlib)
5-
6-
set_target_properties(
7-
HttpCompressingServer PROPERTIES
8-
MACOSX_BUNDLE "de.taschenorakel.qnc.HttpCompressingServer"
9-
XCODE_PRODUCT_TYPE "com.apple.product-type.bundle.unit-test"
10-
)
114
endif()

mdns/CMakeLists.txt

+3-18
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,20 @@
1-
add_library(
1+
qcn_add_library(
22
MDNSResolver STATIC
33
mdnsmessage.cpp
44
mdnsmessage.h
55
mdnsresolver.cpp
66
mdnsresolver.h
77
)
88

9-
target_include_directories(MDNSResolver PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
10-
target_compile_options(MDNSResolver PRIVATE ${QNC_COMPILE_OPTIONS})
119
target_link_libraries(MDNSResolver PUBLIC QtNetworkCrumbs)
1210

13-
target_compile_definitions(
14-
MDNSResolver PRIVATE
15-
-DQT_DISABLE_DEPRECATED_BEFORE=0x050f00
16-
-DQT_NO_CAST_FROM_ASCII=1
17-
-DQT_NO_URL_CAST_FROM_STRING=1
18-
)
1911

2012
if (NOT IOS) # FIXME Figure out code signing on Github
21-
add_executable(MDNSResolverDemo mdnsresolverdemo.cpp)
13+
qnc_add_executable(MDNSResolverDemo TYPE tool mdnsresolverdemo.cpp)
2214
target_link_libraries(MDNSResolverDemo PRIVATE MDNSResolver)
23-
24-
set_target_properties(
25-
MDNSResolverDemo PROPERTIES
26-
MACOSX_BUNDLE "de.taschenorakel.qnc.MDNSResolverDemo"
27-
XCODE_PRODUCT_TYPE "com.apple.product-type.bundle.unit-test"
28-
)
2915
endif()
3016

3117
#if (WIN32)
32-
# add_executable(WinDNSTest windnstest.cpp)
33-
# target_compile_definitions(WinDNSTest PRIVATE -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP)
18+
# qnc_add_executable(WinDNSTest TYPE tool windnstest.cpp)
3419
# target_link_libraries(WinDNSTest dnsapi.lib)
3520
#endif()

qnc/CMakeLists.txt

+1-11
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,7 @@
1-
add_library(
1+
qnc_add_library(
22
QtNetworkCrumbs STATIC
33
qncliterals.h
44
qncliterals.cpp
55
)
66

7-
target_include_directories(QtNetworkCrumbs PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
8-
target_compile_options(QtNetworkCrumbs PRIVATE ${QNC_COMPILE_OPTIONS})
97
target_link_libraries(QtNetworkCrumbs PUBLIC Qt::Network)
10-
11-
target_compile_definitions(
12-
QtNetworkCrumbs PRIVATE
13-
-DQT_DISABLE_DEPRECATED_BEFORE=0x050f00
14-
-DQT_NO_CAST_FROM_ASCII=1
15-
-DQT_NO_URL_CAST_FROM_STRING=1
16-
)
17-

tests/auto/CMakeLists.txt

+13-11
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,20 @@ else()
66
unset(TEST_RUNNER)
77
endif()
88

9-
function(add_testcase NAME)
10-
add_executable(${NAME} ${NAME}.cpp)
11-
target_compile_options(${NAME} PRIVATE ${QNC_COMPILE_OPTIONS})
12-
target_link_libraries(${NAME} PRIVATE MDNSResolver Qt::Test)
9+
function(add_testcase SOURCE_FILENAME) # [SOURCES...]
10+
cmake_parse_arguments(TESTCASE "" "NAME" "LIBRARIES;SOURCES" ${ARGN})
1311

14-
set_target_properties(
15-
${NAME} PROPERTIES
16-
MACOSX_BUNDLE "de.taschenorakel.qnc.${NAME}"
17-
XCODE_PRODUCT_TYPE "com.apple.product-type.bundle.unit-test")
12+
if (NOT TESTCASE_NAME)
13+
cmake_path(GET SOURCE_FILENAME STEM TESTCASE_NAME)
14+
endif()
1815

19-
add_test(NAME ${NAME} COMMAND ${TEST_RUNNER} $<TARGET_FILE:${NAME}>)
16+
list(PREPEND TESTCASE_SOURCES "${SOURCE_FILENAME}")
17+
list(APPEND TESTCASE_SOURCES ${TESTCASE_UNPARSED_ARGUMENTS})
18+
19+
qnc_add_executable("${TESTCASE_NAME}" TYPE "unit-test" ${TESTCASE_SOURCES})
20+
target_link_libraries("${TESTCASE_NAME}" PRIVATE Qt::Test ${TESTCASE_LIBRARIES})
21+
add_test(NAME "${TESTCASE_NAME}" COMMAND "${TEST_RUNNER}" "$<TARGET_FILE:${TESTCASE_NAME}>")
2022
endfunction()
2123

22-
add_testcase(tst_mdnsmessages)
23-
add_testcase(tst_mdnsresolver)
24+
add_testcase(tst_mdnsmessages.cpp LIBRARIES MDNSResolver)
25+
add_testcase(tst_mdnsresolver.cpp LIBRARIES MDNSResolver)

0 commit comments

Comments
 (0)