CMakeLists.txt 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. cmake_minimum_required(VERSION 2.8)
  2. project(MacRuntimePath_A)
  3. # a shared library
  4. add_library(shared SHARED shared.cpp shared.h)
  5. set_target_properties(shared PROPERTIES MACOSX_RPATH 1)
  6. # a shared library with custom set @rpath
  7. add_library(shared2 SHARED shared.cpp shared.h)
  8. set_target_properties(shared2 PROPERTIES
  9. BUILD_WITH_INSTALL_RPATH 1 INSTALL_NAME_DIR "@rpath")
  10. # a framework library
  11. add_library(framework SHARED framework.cpp framework.h)
  12. set_target_properties(framework PROPERTIES MACOSX_RPATH 1 FRAMEWORK 1)
  13. # another framework
  14. add_library(framework2 SHARED framework2.cpp framework2.h)
  15. set_target_properties(framework2 PROPERTIES MACOSX_RPATH 1 FRAMEWORK 1)
  16. # executable to test a shared library dependency with install rpaths
  17. add_executable(test1 test1.cpp)
  18. target_link_libraries(test1 shared)
  19. set_target_properties(test1 PROPERTIES
  20. BUILD_WITH_INSTALL_RPATH 1 INSTALL_RPATH "@loader_path/../lib")
  21. # executable to test a framework library dependency with install rpaths
  22. add_executable(test2 test2.cpp)
  23. target_link_libraries(test2 framework)
  24. set_target_properties(test2 PROPERTIES
  25. BUILD_WITH_INSTALL_RPATH 1 INSTALL_RPATH "@loader_path/../lib")
  26. # executable to test a framework library dependency with build tree rpaths
  27. add_executable(test3 test3.cpp)
  28. target_link_libraries(test3 framework)
  29. # executable to test a framework library dependency with build tree rpaths
  30. add_executable(test4 test1.cpp)
  31. target_link_libraries(test4 shared2)
  32. set_target_properties(shared shared2 framework PROPERTIES
  33. LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib")
  34. set_target_properties(test1 test2 test3 test4 PROPERTIES
  35. RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin")
  36. foreach(config ${CMAKE_CONFIGURATION_TYPES})
  37. string(TOUPPER ${config} CONFIG)
  38. set_target_properties(shared shared2 framework PROPERTIES
  39. LIBRARY_OUTPUT_DIRECTORY_${CONFIG}
  40. "${CMAKE_CURRENT_BINARY_DIR}/${config}/lib")
  41. set_target_properties(test1 test2 test3 test4 PROPERTIES
  42. RUNTIME_OUTPUT_DIRECTORY_${CONFIG}
  43. "${CMAKE_CURRENT_BINARY_DIR}/${config}/bin")
  44. endforeach()
  45. foreach(test test1 test2 test3 test4)
  46. add_custom_target(${test}_run ALL
  47. COMMAND ${test}
  48. DEPENDS ${test}
  49. )
  50. endforeach()
  51. export(TARGETS shared shared2 framework FILE "${CMAKE_CURRENT_BINARY_DIR}/exp.cmake")
  52. install(TARGETS shared EXPORT MyExport DESTINATION lib)
  53. install(TARGETS shared2 EXPORT MyExport DESTINATION lib2)
  54. install(TARGETS framework EXPORT MyExport DESTINATION lib-fw)
  55. install(TARGETS framework2 EXPORT MyExport DESTINATION lib-fw2)
  56. install(EXPORT MyExport DESTINATION lib FILE exp.cmake)