LINKER_expansion-list.cmake 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. enable_language(C)
  2. add_executable(dump dump.c)
  3. add_link_options("${LINKER_OPTION}")
  4. # ensure no temp file will be used
  5. string(REPLACE "${CMAKE_START_TEMP_FILE}" "" CMAKE_C_CREATE_SHARED_LIBRARY "${CMAKE_C_CREATE_SHARED_LIBRARY}")
  6. string(REPLACE "${CMAKE_END_TEMP_FILE}" "" CMAKE_C_CREATE_SHARED_LIBRARY "${CMAKE_C_CREATE_SHARED_LIBRARY}")
  7. add_library(example SHARED LinkOptionsLib.c)
  8. # use LAUNCH facility to dump linker command
  9. set_property(TARGET example PROPERTY RULE_LAUNCH_LINK "\"${CMAKE_CURRENT_BINARY_DIR}/dump${CMAKE_EXECUTABLE_SUFFIX}\"")
  10. add_dependencies (example dump)
  11. # generate reference for LINKER flag
  12. if (CMAKE_C_LINKER_WRAPPER_FLAG)
  13. set(linker_flag ${CMAKE_C_LINKER_WRAPPER_FLAG})
  14. list(GET linker_flag -1 linker_space)
  15. if (linker_space STREQUAL " ")
  16. list(REMOVE_AT linker_flag -1)
  17. else()
  18. set(linker_space)
  19. endif()
  20. list (JOIN linker_flag " " linker_flag)
  21. if (CMAKE_C_LINKER_WRAPPER_FLAG_SEP)
  22. string (APPEND linker_flag "${linker_space}" "-foo${CMAKE_C_LINKER_WRAPPER_FLAG_SEP}bar")
  23. else()
  24. set (linker_flag "${linker_flag}${linker_space}-foo ${linker_flag}${linker_space}bar")
  25. endif()
  26. else()
  27. set(linker_flag "-foo bar")
  28. endif()
  29. file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/LINKER.txt" "${linker_flag}")