lagom_install_options.cmake 1.5 KB

1234567891011121314151617181920212223242526272829303132333435
  1. include_guard()
  2. include(GNUInstallDirs) # make sure to include before we mess w/RPATH
  3. # Handle multi-config generators (e.g. MSVC, Xcode, Ninja Multi-Config)
  4. get_property(is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
  5. set(IN_BUILD_PREFIX "")
  6. if (is_multi_config)
  7. set(IN_BUILD_PREFIX "$<CONFIG>/")
  8. endif()
  9. # Mirror the structure of the installed tree to ensure that rpaths
  10. # always remain valid.
  11. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${IN_BUILD_PREFIX}${CMAKE_INSTALL_BINDIR}")
  12. set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${IN_BUILD_PREFIX}${CMAKE_INSTALL_LIBDIR}")
  13. set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${IN_BUILD_PREFIX}${CMAKE_INSTALL_LIBDIR}")
  14. # FIXME: Stop setting this when we have a good way to retrieve the directory that has the swift module
  15. # file for use by the swift frontend's header generator
  16. set(CMAKE_Swift_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/${IN_BUILD_PREFIX}swift")
  17. set(CMAKE_SKIP_BUILD_RPATH FALSE)
  18. set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
  19. # See slide 100 of the following ppt :^)
  20. # https://crascit.com/wp-content/uploads/2019/09/Deep-CMake-For-Library-Authors-Craig-Scott-CppCon-2019.pdf
  21. if (APPLE)
  22. set(CMAKE_MACOSX_RPATH TRUE)
  23. set(CMAKE_INSTALL_NAME_DIR "@rpath")
  24. set(CMAKE_INSTALL_RPATH "@executable_path/../lib")
  25. else()
  26. set(CMAKE_INSTALL_RPATH "$ORIGIN:$ORIGIN/../${CMAKE_INSTALL_LIBDIR}")
  27. endif()
  28. set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
  29. set(CMAKE_INSTALL_MESSAGE NEVER)