CMakeLists.txt 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. cmake_minimum_required(VERSION 2.8.11)
  2. project(AliasTarget)
  3. add_library(foo SHARED empty.cpp)
  4. add_library(PREFIX::Foo ALIAS foo)
  5. add_library(Another::Alias ALIAS foo)
  6. add_library(objects OBJECT object.cpp)
  7. add_library(Alias::Objects ALIAS objects)
  8. target_compile_definitions(foo PUBLIC FOO_DEFINE)
  9. add_library(bar SHARED empty.cpp)
  10. target_compile_definitions(bar PUBLIC BAR_DEFINE)
  11. target_link_libraries(foo LINK_PUBLIC $<$<STREQUAL:$<TARGET_PROPERTY:PREFIX::Foo,ALIASED_TARGET>,foo>:bar>)
  12. add_executable(AliasTarget commandgenerator.cpp $<TARGET_OBJECTS:Alias::Objects>)
  13. add_executable(PREFIX::AliasTarget ALIAS AliasTarget)
  14. add_executable(Generator::Command ALIAS AliasTarget)
  15. add_custom_command(OUTPUT commandoutput.h COMMAND Generator::Command)
  16. add_library(bat SHARED bat.cpp "${CMAKE_CURRENT_BINARY_DIR}/commandoutput.h")
  17. target_link_libraries(bat PREFIX::Foo)
  18. target_include_directories(bat PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
  19. add_executable(targetgenerator targetgenerator.cpp)
  20. add_executable(Generator::Target ALIAS targetgenerator)
  21. add_custom_target(usealias Generator::Target)
  22. add_dependencies(bat usealias)
  23. if (NOT TARGET Another::Alias)
  24. message(SEND_ERROR "Another::Alias is not considered a target.")
  25. endif()
  26. get_target_property(_alt PREFIX::Foo ALIASED_TARGET)
  27. if (NOT ${_alt} STREQUAL foo)
  28. message(SEND_ERROR "ALIASED_TARGET is not foo: ${_alt}")
  29. endif()
  30. get_property(_alt2 TARGET PREFIX::Foo PROPERTY ALIASED_TARGET)
  31. if (NOT ${_alt2} STREQUAL foo)
  32. message(SEND_ERROR "ALIASED_TARGET is not foo.")
  33. endif()
  34. add_library(iface INTERFACE)
  35. add_library(Alias::Iface ALIAS iface)