64 lines
2.3 KiB
CMake
64 lines
2.3 KiB
CMake
|
cmake_minimum_required(VERSION 2.8)
|
||
|
project(MacRuntimePath_A)
|
||
|
|
||
|
# a shared library
|
||
|
add_library(shared SHARED shared.cpp shared.h)
|
||
|
set_target_properties(shared PROPERTIES MACOSX_RPATH 1)
|
||
|
|
||
|
# a shared library with custom set @rpath
|
||
|
add_library(shared2 SHARED shared.cpp shared.h)
|
||
|
set_target_properties(shared2 PROPERTIES
|
||
|
BUILD_WITH_INSTALL_RPATH 1 INSTALL_NAME_DIR "@rpath")
|
||
|
|
||
|
# a framework library
|
||
|
add_library(framework SHARED framework.cpp framework.h)
|
||
|
set_target_properties(framework PROPERTIES MACOSX_RPATH 1 FRAMEWORK 1)
|
||
|
|
||
|
# executable to test a shared library dependency with install rpaths
|
||
|
add_executable(test1 test1.cpp)
|
||
|
target_link_libraries(test1 shared)
|
||
|
set_target_properties(test1 PROPERTIES
|
||
|
BUILD_WITH_INSTALL_RPATH 1 INSTALL_RPATH "@loader_path/../lib")
|
||
|
|
||
|
# executable to test a framework library dependency with install rpaths
|
||
|
add_executable(test2 test2.cpp)
|
||
|
target_link_libraries(test2 framework)
|
||
|
set_target_properties(test2 PROPERTIES
|
||
|
BUILD_WITH_INSTALL_RPATH 1 INSTALL_RPATH "@loader_path/../lib")
|
||
|
|
||
|
# executable to test a framework library dependency with build tree rpaths
|
||
|
add_executable(test3 test3.cpp)
|
||
|
target_link_libraries(test3 framework)
|
||
|
|
||
|
# executable to test a framework library dependency with build tree rpaths
|
||
|
add_executable(test4 test1.cpp)
|
||
|
target_link_libraries(test4 shared2)
|
||
|
|
||
|
set_target_properties(shared shared2 framework PROPERTIES
|
||
|
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib")
|
||
|
set_target_properties(test1 test2 test3 test4 PROPERTIES
|
||
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin")
|
||
|
foreach(config ${CMAKE_CONFIGURATION_TYPES})
|
||
|
string(TOUPPER ${config} CONFIG)
|
||
|
set_target_properties(shared shared2 framework PROPERTIES
|
||
|
LIBRARY_OUTPUT_DIRECTORY_${CONFIG}
|
||
|
"${CMAKE_CURRENT_BINARY_DIR}/${config}/lib")
|
||
|
set_target_properties(test1 test2 test3 test4 PROPERTIES
|
||
|
RUNTIME_OUTPUT_DIRECTORY_${CONFIG}
|
||
|
"${CMAKE_CURRENT_BINARY_DIR}/${config}/bin")
|
||
|
endforeach()
|
||
|
|
||
|
foreach(test test1 test2 test3 test4)
|
||
|
add_custom_target(${test}_run ALL
|
||
|
COMMAND ${test}
|
||
|
DEPENDS ${test}
|
||
|
)
|
||
|
endforeach()
|
||
|
|
||
|
export(TARGETS shared shared2 framework FILE "${CMAKE_CURRENT_BINARY_DIR}/exp.cmake")
|
||
|
|
||
|
install(TARGETS shared EXPORT MyExport DESTINATION lib)
|
||
|
install(TARGETS shared2 EXPORT MyExport DESTINATION lib2)
|
||
|
install(TARGETS framework EXPORT MyExport DESTINATION lib-fw)
|
||
|
install(EXPORT MyExport DESTINATION lib FILE exp.cmake)
|