Imported Upstream version 2.8.12.2
[platform/upstream/cmake.git] / Tests / AliasTarget / CMakeLists.txt
1
2 cmake_minimum_required(VERSION 2.8.11)
3 project(AliasTarget)
4
5 add_library(foo SHARED empty.cpp)
6 add_library(PREFIX::Foo ALIAS foo)
7 add_library(Another::Alias ALIAS foo)
8
9 add_library(objects OBJECT object.cpp)
10 add_library(Alias::Objects ALIAS objects)
11
12 target_compile_definitions(foo PUBLIC FOO_DEFINE)
13
14 add_library(bar SHARED empty.cpp)
15 target_compile_definitions(bar PUBLIC BAR_DEFINE)
16
17 target_link_libraries(foo LINK_PUBLIC $<$<STREQUAL:$<TARGET_PROPERTY:PREFIX::Foo,ALIASED_TARGET>,foo>:bar>)
18
19 add_executable(AliasTarget commandgenerator.cpp $<TARGET_OBJECTS:Alias::Objects>)
20 add_executable(PREFIX::AliasTarget ALIAS AliasTarget)
21 add_executable(Generator::Command ALIAS AliasTarget)
22
23 add_custom_command(OUTPUT commandoutput.h COMMAND Generator::Command)
24
25 add_library(bat SHARED bat.cpp "${CMAKE_CURRENT_BINARY_DIR}/commandoutput.h")
26 target_link_libraries(bat PREFIX::Foo)
27 target_include_directories(bat PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
28
29 add_executable(targetgenerator targetgenerator.cpp)
30 add_executable(Generator::Target ALIAS targetgenerator)
31
32 add_custom_target(usealias Generator::Target)
33 add_dependencies(bat usealias)
34
35 if (NOT TARGET Another::Alias)
36   message(SEND_ERROR "Another::Alias is not considered a target.")
37 endif()
38
39 get_target_property(_alt PREFIX::Foo ALIASED_TARGET)
40 if (NOT ${_alt} STREQUAL foo)
41   message(SEND_ERROR "ALIASED_TARGET is not foo: ${_alt}")
42 endif()
43
44 get_property(_alt2 TARGET PREFIX::Foo PROPERTY ALIASED_TARGET)
45 if (NOT ${_alt2} STREQUAL foo)
46   message(SEND_ERROR "ALIASED_TARGET is not foo.")
47 endif()