|
|
@@ -0,0 +1,70 @@
|
|
|
+cmake_minimum_required(VERSION 2.8)
|
|
|
+project(BundleUtilities)
|
|
|
+
|
|
|
+###### the various types of dependencies we can have
|
|
|
+
|
|
|
+# a shared library
|
|
|
+add_library(shared SHARED shared.cpp shared.h)
|
|
|
+
|
|
|
+# another shared library
|
|
|
+add_library(shared2 SHARED shared2.cpp shared2.h)
|
|
|
+
|
|
|
+# a loadable module (depends on shared2)
|
|
|
+# test app will load this at runtime
|
|
|
+add_library(module MODULE module.cpp module.h)
|
|
|
+set_target_properties(module PROPERTIES PREFIX "")
|
|
|
+get_target_property(module_loc module LOCATION)
|
|
|
+target_link_libraries(module shared2)
|
|
|
+
|
|
|
+# a framework library
|
|
|
+add_library(framework SHARED framework.cpp framework.h)
|
|
|
+# TODO: fix problems with local frameworks without rpaths
|
|
|
+#set_target_properties(framework PROPERTIES FRAMEWORK 1)
|
|
|
+
|
|
|
+# make sure rpaths are not helping BundleUtilities or the executables
|
|
|
+set_target_properties(shared shared2 module framework PROPERTIES
|
|
|
+ SKIP_BUILD_RPATH 1)
|
|
|
+
|
|
|
+
|
|
|
+###### test a Bundle application using dependencies
|
|
|
+
|
|
|
+set(TESTBUNDLEDIR "${CMAKE_CURRENT_BINARY_DIR}/testdir1")
|
|
|
+add_executable(testbundleutils1 MACOSX_BUNDLE testbundleutils.cpp)
|
|
|
+target_link_libraries(testbundleutils1 shared framework ${CMAKE_DL_LIBS})
|
|
|
+set_target_properties(testbundleutils1 PROPERTIES
|
|
|
+ INSTALL_RPATH "${TESTBUNDLEDIR}"
|
|
|
+ BUILD_WITH_INSTALL_RPATH 1)
|
|
|
+get_target_property(loc testbundleutils1 LOCATION)
|
|
|
+
|
|
|
+add_custom_target(testbundleutils1_test ALL
|
|
|
+ COMMAND ${CMAKE_COMMAND}
|
|
|
+ "-DINPUT=${loc}"
|
|
|
+ "-DMODULE=${module_loc}"
|
|
|
+ "-DINPUTDIR=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}"
|
|
|
+ "-DOUTPUTDIR=${TESTBUNDLEDIR}"
|
|
|
+ -P "${CMAKE_CURRENT_SOURCE_DIR}/bundleutils.cmake"
|
|
|
+ )
|
|
|
+
|
|
|
+add_dependencies(testbundleutils1_test testbundleutils1)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+###### test a non-Bundle application using dependencies
|
|
|
+
|
|
|
+set(TESTBUNDLEDIR "${CMAKE_CURRENT_BINARY_DIR}/testdir2")
|
|
|
+add_executable(testbundleutils2 testbundleutils.cpp)
|
|
|
+target_link_libraries(testbundleutils2 shared framework ${CMAKE_DL_LIBS})
|
|
|
+set_target_properties(testbundleutils2 PROPERTIES
|
|
|
+ INSTALL_RPATH "${TESTBUNDLEDIR}"
|
|
|
+ BUILD_WITH_INSTALL_RPATH 1)
|
|
|
+get_target_property(loc testbundleutils2 LOCATION)
|
|
|
+
|
|
|
+add_custom_target(testbundleutils2_test ALL
|
|
|
+ COMMAND ${CMAKE_COMMAND}
|
|
|
+ "-DINPUT=${loc}"
|
|
|
+ "-DMODULE=${module_loc}"
|
|
|
+ "-DINPUTDIR=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}"
|
|
|
+ "-DOUTPUTDIR=${TESTBUNDLEDIR}"
|
|
|
+ -P "${CMAKE_CURRENT_SOURCE_DIR}/bundleutils.cmake"
|
|
|
+ )
|
|
|
+add_dependencies(testbundleutils2_test testbundleutils2)
|