Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Kitware
GitHub Repository: Kitware/CMake
Path: blob/master/Tests/CMakeCommands/target_compile_options/CMakeLists.txt
3152 views
1
cmake_minimum_required(VERSION 3.10)
2
3
if(POLICY CMP0129)
4
cmake_policy(SET CMP0129 NEW)
5
endif()
6
7
project(target_compile_options)
8
9
add_executable(target_compile_options
10
"${CMAKE_CURRENT_SOURCE_DIR}/main.cpp"
11
)
12
target_compile_options(target_compile_options
13
PRIVATE $<$<CXX_COMPILER_ID:AppleClang,IBMClang,CrayClang,Clang,GNU,LCC>:-DMY_PRIVATE_DEFINE>
14
PUBLIC $<$<COMPILE_LANG_AND_ID:CXX,GNU,LCC>:-DMY_PUBLIC_DEFINE>
15
PUBLIC $<$<COMPILE_LANG_AND_ID:CXX,GNU,LCC,Clang,AppleClang,CrayClang,IBMClang>:-DMY_MUTLI_COMP_PUBLIC_DEFINE>
16
INTERFACE $<$<CXX_COMPILER_ID:GNU,LCC>:-DMY_INTERFACE_DEFINE>
17
INTERFACE $<$<CXX_COMPILER_ID:GNU,LCC,Clang,AppleClang,CrayClang,IBMClang>:-DMY_MULTI_COMP_INTERFACE_DEFINE>
18
)
19
20
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|LCC")
21
target_compile_definitions(target_compile_options
22
PRIVATE
23
"DO_GNU_TESTS"
24
)
25
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
26
target_compile_definitions(target_compile_options
27
PRIVATE
28
"DO_CLANG_TESTS"
29
)
30
endif()
31
32
add_executable(consumer
33
"${CMAKE_CURRENT_SOURCE_DIR}/consumer.cpp"
34
)
35
36
target_sources(consumer PRIVATE
37
"${CMAKE_CURRENT_SOURCE_DIR}/consumer.c"
38
)
39
target_compile_options(consumer
40
PRIVATE
41
-DCONSUMER_LANG_$<COMPILE_LANGUAGE>
42
-DLANG_IS_CXX=$<COMPILE_LANGUAGE:CXX>
43
-DLANG_IS_C=$<COMPILE_LANGUAGE:C>
44
)
45
46
if(CMAKE_GENERATOR MATCHES "Visual Studio")
47
target_compile_definitions(consumer
48
PRIVATE TEST_LANG_DEFINES_FOR_VISUAL_STUDIO
49
)
50
endif()
51
52
target_compile_options(consumer
53
PRIVATE $<$<CXX_COMPILER_ID:GNU,LCC,Clang,AppleClang,CrayClang,IBMClang>:$<TARGET_PROPERTY:target_compile_options,INTERFACE_COMPILE_OPTIONS>>
54
)
55
56
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|LCC")
57
target_compile_definitions(consumer
58
PRIVATE
59
"DO_GNU_TESTS"
60
)
61
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
62
target_compile_definitions(consumer
63
PRIVATE
64
"DO_CLANG_TESTS"
65
)
66
endif()
67
68
# Test no items
69
target_compile_options(consumer
70
PRIVATE
71
)
72
73