Advertisement
Guest User

Untitled

a guest
May 22nd, 2018
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
CMake 1.75 KB | None | 0 0
  1. cmake_minimum_required(VERSION 3.9) # can be lowered
  2.  
  3. project(cmake-follow-symlinks-at-install LANGUAGES NONE)
  4.  
  5. # Setup a test case:
  6. # +---------------------------------------+
  7. # | symdir/                               |
  8. # |     foo.lib.0 -> ../libdir/foo.lib    |
  9. # |     foo.lib.1 -> ../libdir/foo.lib    |
  10. # |     bar.lib.0 -> ../libdir/bar.lib    |
  11. # |     bar.lib.1 -> ../libdir/bar.lib    |
  12. # | libdir/                               |
  13. # |     foo.lib                           |
  14. # |     bar.lib                           |
  15. # +---------------------------------------+
  16. execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory "symdir")
  17. execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory "libdir")
  18. foreach(mylib IN ITEMS "foo.lib" "bar.lib")
  19.         execute_process(COMMAND ${CMAKE_COMMAND} -E touch "libdir/${mylib}")
  20.         foreach(num RANGE 1)
  21.                 execute_process(COMMAND ${CMAKE_COMMAND} -E touch "symdir/${mylib}.${num}")
  22.                 execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${CMAKE_CURRENT_SOURCE_DIR}/libdir/${mylib}" "${CMAKE_CURRENT_SOURCE_DIR}/symdir/${mylib}.${num}")
  23.         endforeach()
  24. endforeach()
  25.  
  26. # Install all files from symdir and resolve their symlinks
  27. file(GLOB symdir_contents RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "symdir/*")
  28. foreach(mylib IN LISTS symdir_contents)
  29.         get_filename_component(fpath "${mylib}" REALPATH)
  30.         install(FILES "${fpath}" DESTINATION "$ENV{HOME}/tmp")
  31. endforeach()
  32.  
  33. # Result:
  34. # +---------------------------------------+
  35. # | -- Installing: /home/l2y/tmp/bar.lib  |
  36. # | -- Up-to-date: /home/l2y/tmp/bar.lib  |
  37. # | -- Installing: /home/l2y/tmp/foo.lib  |
  38. # | -- Up-to-date: /home/l2y/tmp/foo.lib  |
  39. # +---------------------------------------+
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement