| cmake_minimum_required (VERSION 3.5) |
| project(LinkInterfaceLoop C) |
| |
| # Add a shared library that incorrectly names itself as a |
| # dependency, thus forming a cycle. |
| add_library(A SHARED IMPORTED) |
| set_target_properties(A PROPERTIES |
| IMPORTED_LINK_DEPENDENT_LIBRARIES A |
| IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/dirA/A" |
| ) |
| |
| # Add a shared library that incorrectly names itself in |
| # its link interface, thus forming a cycle. |
| add_library(B SHARED IMPORTED) |
| set_target_properties(B PROPERTIES |
| IMPORTED_LINK_INTERFACE_LIBRARIES B |
| IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/dirB/B" |
| ) |
| |
| # Add a shared library with an empty link interface |
| # that depends on two shared libraries. |
| add_library(C SHARED lib.c) |
| set_property(TARGET C PROPERTY LINK_INTERFACE_LIBRARIES "") |
| target_link_libraries(C B A) |
| |
| add_executable(main main.c) |
| target_link_libraries(main C) |