| enable_language(C) |
| |
| set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY out) |
| set(CMAKE_LIBRARY_OUTPUT_DIRECTORY out) |
| set(CMAKE_RUNTIME_OUTPUT_DIRECTORY out) |
| |
| add_library(SharedTop SHARED mylib.c) |
| add_library(StaticTop STATIC mylib.c) |
| add_library(StaticMiddle STATIC mylib.c) |
| |
| add_library(StaticNone STATIC mylib.c) |
| add_library(StaticPreBuild STATIC mylib.c) |
| add_library(StaticPreLink STATIC mylib.c) |
| add_library(StaticPostBuild STATIC mylib.c) |
| add_library(StaticCc STATIC mylibcc.c) |
| |
| add_custom_command(TARGET StaticPreBuild PRE_BUILD |
| COMMAND ${CMAKE_COMMAND} -E true) |
| add_custom_command(TARGET StaticPreLink PRE_LINK |
| COMMAND ${CMAKE_COMMAND} -E true) |
| add_custom_command(TARGET StaticPostBuild POST_BUILD |
| COMMAND ${CMAKE_COMMAND} -E true) |
| add_custom_command(OUTPUT mylibcc.c |
| COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/mylib.c ${CMAKE_BINARY_DIR}/mylibcc.c) |
| |
| target_link_libraries(SharedTop PRIVATE StaticMiddle) |
| target_link_libraries(StaticTop PRIVATE StaticMiddle) |
| target_link_libraries(StaticMiddle PRIVATE StaticNone StaticPreBuild StaticPreLink StaticPostBuild StaticCc) |
| |
| if(OPTIMIZE_TOP) |
| set_target_properties(SharedTop StaticTop PROPERTIES |
| OPTIMIZE_DEPENDENCIES TRUE) |
| endif() |
| if(OPTIMIZE_MIDDLE) |
| set_target_properties(StaticMiddle PROPERTIES |
| OPTIMIZE_DEPENDENCIES TRUE) |
| endif() |
| |
| include(WriteTargets.cmake) |
| write_targets() |