Files
CMake/Tests/AliasTarget/CMakeLists.txt
T
Brad King 61bea8f3c8 Tests: Remove incidental use of C++98 compiler modes
Several tests specify use of C++98 mode since commit b0f277db38 (HP aCC:
record compiler flag for Ansi C++98 support for version 3.80 onwards,
2014-04-15, v3.1.0-rc1~550^2).  The motivating use case for those
changes was dropped by commit 49640d3629 (HP-UX: Drop support for
building CMake on HP-UX, 2017-08-04, v3.10.0-rc1~304^2), so remove the
use of C++98 mode too.  Also remove code that, on some compilers, used
C++11 instead of C++98, because we can now just use their default mode.
2022-04-26 12:01:06 -04:00

74 lines
2.3 KiB
CMake

cmake_minimum_required(VERSION 2.8.11)
cmake_policy(SET CMP0054 NEW)
project(AliasTarget)
add_library(foo SHARED empty.cpp)
add_library(PREFIX::Foo ALIAS foo)
add_library(Another::Alias ALIAS foo)
add_library(objects OBJECT object.cpp)
add_library(Alias::Objects ALIAS objects)
target_compile_definitions(foo PUBLIC FOO_DEFINE)
add_library(bar SHARED empty.cpp)
target_compile_definitions(bar PUBLIC BAR_DEFINE)
target_link_libraries(foo LINK_PUBLIC $<$<STREQUAL:$<TARGET_PROPERTY:PREFIX::Foo,ALIASED_TARGET>,foo>:bar>)
add_executable(AliasTarget commandgenerator.cpp $<TARGET_OBJECTS:Alias::Objects>)
add_executable(PREFIX::AliasTarget ALIAS AliasTarget)
add_executable(Generator::Command ALIAS AliasTarget)
add_custom_command(OUTPUT commandoutput.h COMMAND Generator::Command)
add_library(bat SHARED bat.cpp "${CMAKE_CURRENT_BINARY_DIR}/commandoutput.h")
target_link_libraries(bat PREFIX::Foo)
target_include_directories(bat PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
add_executable(targetgenerator targetgenerator.cpp)
add_executable(Generator::Target ALIAS targetgenerator)
add_subdirectory(subdir)
add_custom_target(usealias Generator::Target $<TARGET_FILE:Sub::tgt>)
add_dependencies(bat usealias)
if (NOT TARGET Another::Alias)
message(SEND_ERROR "Another::Alias is not considered a target.")
endif()
get_target_property(_alt PREFIX::Foo ALIASED_TARGET)
if (NOT ${_alt} STREQUAL foo)
message(SEND_ERROR "ALIASED_TARGET is not foo: ${_alt}")
endif()
get_property(_alt2 TARGET PREFIX::Foo PROPERTY ALIASED_TARGET)
if (NOT ${_alt2} STREQUAL foo)
message(SEND_ERROR "ALIASED_TARGET is not foo.")
endif()
add_library(iface INTERFACE)
add_library(Alias::Iface ALIAS iface)
get_property(_aliased_target_set TARGET foo PROPERTY ALIASED_TARGET SET)
if(_aliased_target_set)
message(SEND_ERROR "ALIASED_TARGET is set for target foo")
endif()
get_target_property(_notAlias1 foo ALIASED_TARGET)
if (NOT DEFINED _notAlias1)
message(SEND_ERROR "_notAlias1 is not defined")
endif()
if (_notAlias1)
message(SEND_ERROR "_notAlias1 is defined, but foo is not an ALIAS")
endif()
if (NOT _notAlias1 STREQUAL _notAlias1-NOTFOUND)
message(SEND_ERROR "_notAlias1 not defined to a -NOTFOUND variant")
endif()
get_property(_notAlias2 TARGET foo PROPERTY ALIASED_TARGET)
if (_notAlias2)
message(SEND_ERROR "_notAlias2 evaluates to true, but foo is not an ALIAS")
endif()