Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Kitware
GitHub Repository: Kitware/CMake
Path: blob/master/Tests/AliasTarget/CMakeLists.txt
3148 views
1
cmake_minimum_required(VERSION 3.10)
2
project(AliasTarget)
3
4
add_library(foo SHARED empty.cpp)
5
add_library(PREFIX::Foo ALIAS foo)
6
add_library(Another::Alias ALIAS foo)
7
8
add_library(objects OBJECT object.cpp)
9
add_library(Alias::Objects ALIAS objects)
10
11
target_compile_definitions(foo PUBLIC FOO_DEFINE)
12
13
add_library(bar SHARED empty.cpp)
14
target_compile_definitions(bar PUBLIC BAR_DEFINE)
15
16
target_link_libraries(foo LINK_PUBLIC $<$<STREQUAL:$<TARGET_PROPERTY:PREFIX::Foo,ALIASED_TARGET>,foo>:bar>)
17
18
add_executable(AliasTarget commandgenerator.cpp $<TARGET_OBJECTS:Alias::Objects>)
19
add_executable(PREFIX::AliasTarget ALIAS AliasTarget)
20
add_executable(Generator::Command ALIAS AliasTarget)
21
22
add_custom_command(OUTPUT commandoutput.h COMMAND Generator::Command)
23
24
add_library(bat SHARED bat.cpp "${CMAKE_CURRENT_BINARY_DIR}/commandoutput.h")
25
target_link_libraries(bat PREFIX::Foo)
26
target_include_directories(bat PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
27
28
add_executable(targetgenerator targetgenerator.cpp)
29
add_executable(Generator::Target ALIAS targetgenerator)
30
31
add_subdirectory(subdir)
32
33
add_custom_target(usealias Generator::Target $<TARGET_FILE:Sub::tgt>)
34
add_dependencies(bat usealias)
35
36
if (NOT TARGET Another::Alias)
37
message(SEND_ERROR "Another::Alias is not considered a target.")
38
endif()
39
40
get_target_property(_alt PREFIX::Foo ALIASED_TARGET)
41
if (NOT ${_alt} STREQUAL foo)
42
message(SEND_ERROR "ALIASED_TARGET is not foo: ${_alt}")
43
endif()
44
45
get_property(_alt2 TARGET PREFIX::Foo PROPERTY ALIASED_TARGET)
46
if (NOT ${_alt2} STREQUAL foo)
47
message(SEND_ERROR "ALIASED_TARGET is not foo.")
48
endif()
49
50
add_library(iface INTERFACE)
51
add_library(Alias::Iface ALIAS iface)
52
53
get_property(_aliased_target_set TARGET foo PROPERTY ALIASED_TARGET SET)
54
if(_aliased_target_set)
55
message(SEND_ERROR "ALIASED_TARGET is set for target foo")
56
endif()
57
58
get_target_property(_notAlias1 foo ALIASED_TARGET)
59
if (NOT DEFINED _notAlias1)
60
message(SEND_ERROR "_notAlias1 is not defined")
61
endif()
62
if (_notAlias1)
63
message(SEND_ERROR "_notAlias1 is defined, but foo is not an ALIAS")
64
endif()
65
if (NOT _notAlias1 STREQUAL _notAlias1-NOTFOUND)
66
message(SEND_ERROR "_notAlias1 not defined to a -NOTFOUND variant")
67
endif()
68
69
get_property(_notAlias2 TARGET foo PROPERTY ALIASED_TARGET)
70
if (_notAlias2)
71
message(SEND_ERROR "_notAlias2 evaluates to true, but foo is not an ALIAS")
72
endif()
73
74