Please do post your info here as well.
On Wed, Nov 25, 2009 at 5:01 AM, Filip Wänström <filip.wanst...@tii.se>wrote: > Just wanted to add an update: I have managed to create a stand alone > MacOSX OpenSceneGraph app that works. Basically it boils down to > scripting the install_name_tool to create loader_paths that points > correctly. I will create an example of this and will be posting that > to the osg-users mailing list. I will post it here too if that's ok? > > Best regards > /Filip > > > On Tue, Nov 24, 2009 at 3:23 PM, Filip Wänström <filip.wanst...@tii.se> > wrote: > > Hi my name is Filip Wänström and I'm new to this list. > > > > I have recently(a few months) started to use CMake for all my > > building. I find that it works well in most cases and probably is the > > best alternative on the "market". Anyway, I like to stay cross > > platform for my projects so I personally develop on a Mac but mostly > > deliver on win32. > > > > Building works fine for me (using Makefile gen for mac and VS for win) > > but I have huge problems with the bundling process. On the Mac I want > > to deliver an app using regular drag and drop as a self contained > > bundle and on windows I want to deliver an installer. > > I have managed to get a win32 installer working using the NSIS > > facilities but it took a lot of extra scripting. On the Mac I have > > been able to create the dragndrop bundle "installer" but it doesn't > > really work. I assume there are some issues with > > rpath/loader_path/executable_path. > > > > For reference the app is an Openscenegraph app that is dependant on > > quite a few libraries that need to be bundled as dll:s on win and > > dylibs/.so on mac. > > > > The question is: what is the current "best practices approaches" on > > these platforms? I have found no complete examples. > > > > > > Finally: parts of my cmake test case for win32: THis works fine and > > creates a usable app that bundles the osg libs as well as a plugin and > > data. It just doesn't feel very neat for being user code. > > > > > > #Basic app test (packaging exercise) > > SET(TARGET_BASIC_APP_SRC BasicApp.cpp BasicAppMain.cpp) > > ADD_EXECUTABLE(BasicApp ${TARGET_BASIC_APP_SRC} ) > > TARGET_LINK_LIBRARIES(BasicApp ${MY_COMMON_LIBS}) > > > > IF(WIN32 AND NOT UNIX) > > SET(CPACK_GENERATOR "NSIS") > > INSTALL( > > TARGETS BasicApp > > DESTINATION bin > > ) > > > > SET(OSG_DLL_DIR $ENV{OSG_ROOT}\\bin) > > FILE(TO_CMAKE_PATH ${OSG_DLL_DIR} OSG_DLL_DIR_CPATH) > > SET(CMAKE_INSTALL_DEBUG_LIBRARIES) > > INCLUDE(InstallRequiredSystemLibraries) > > SET(CPACK_PACKAGE_EXECUTABLES "BasicApp" "Basic App") > > > > CONFIGURE_FILE( > > "${CMAKE_MODULE_PATH}/dependencies.cmake.in" > > "${CMAKE_CURRENT_BINARY_DIR}/dependencies.cmake" > > @ONLY > > ) > > INSTALL(CODE "set(input_file > > \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/bin/BasicApp.exe \")") > > INSTALL(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/dependencies.cmake") > > > > SET(OSG_PLUGINS_DIR > > "${OSG_DLL_DIR_CPATH}/osgPlugins-${OPENSCENEGRAPH_VERSION}") > > MESSAGE("Installing plugins from: ${OSG_PLUGINS_DIR}") > > # Extra plugin installs that the dependency checker can't find > > INSTALL( > > FILES "${OSG_PLUGINS_DIR}/osgdb_obj.dll" > > DESTINATION bin) > > # Install data that uses (at runtime) the plugin above > > INSTALL(FILES > > "${Dope_SOURCE_DIR}/data/models/clogo.obj" > > "${Dope_SOURCE_DIR}/data/models/clogo.mtl" > > DESTINATION data/models) > > > > # Create shortcuts usin NSIS commands > > SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS " CreateShortCut > > '$INSTDIR\\\\shortcut.lnk' '$INSTDIR\\\\bin\\\\BasicApp.exe' ") > > > > # Install vc90 sp1 redist > > # windows update broke a lot of things so lets add an vcdist > > dependant installer > > INSTALL(FILES > > > "${Dope_SOURCE_DIR}/external/win32_vc9/win_extras/vcredist_x86.exe" > > DESTINATION win32_extras/) > > > > SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "ExecWait > > '$INSTDIR\\\\win32_extras\\\\vcredist_x86.exe'") > > ENDIF(WIN32 AND NOT UNIX) > > > > > > # dependcies.cmake.in is: > > > > if(NOT DEFINED input_file) > > message(FATAL_ERROR "input file is not defined") > > endif(NOT DEFINED input_file) > > message("Using ${input_file}") > > INCLUDE(GetPrerequisites) > > GET_PREREQUISITES(${input_file} DEPENDENCIES 1 1 "" "") > > > > FOREACH(DEPENDENCY ${DEPENDENCIES}) > > MESSAGE("DEPENDENCY: ${DEPENDENCY}") > > GET_FILENAME_COMPONENT(DEPENDENCY_NAME "${DEPENDENCY}" NAME) > > GET_FILENAME_COMPONENT(DEPENDENCY_ACTUAL "${DEPENDENCY}" REALPATH) > > MESSAGE("DEPENDENCY_NAME: ${DEPENDENCY_NAME}") > > MESSAGE("DEPENDENCY_ACTUAL: ${DEPENDENCY_ACTUAL}") > > FIND_FILE(${DEPENDENCY_NAME}_REAL_PATH ${DEPENDENCY_NAME} ) > > MESSAGE("DEPENDENCY_REAL_PATH: ${${DEPENDENCY_NAME}_REAL_PATH}") > > > > MESSAGE("installing into: ${CMAKE_INSTALL_PREFIX}/bin") > > FILE(COPY ${${DEPENDENCY_NAME}_REAL_PATH} DESTINATION > > "${CMAKE_INSTALL_PREFIX}/bin") > > #INSTALL(FILES "${DEPENDENCY_REAL_PATH}" DESTINATION bin) > > ENDFOREACH() > > > > On the mac, I don't have any working code yet. I feel that I am close, > > but as it is, the code cannot load the right plugin > > > > IF (APPLE) > > SET(MACOSX_BUNDLE_INFO_STRING "MACOSX_BUNDLE_INFO_STRING") > > SET(MACOSX_BUNDLE_ICON_FILE "") > > SET(MACOSX_BUNDLE_GUI_IDENTIFIER "BasicAppGuiId") > > SET(MACOSX_BUNDLE_LONG_VERSION_STRING "long ver string") > > SET(MACOSX_BUNDLE_BUNDLE_NAME "BasicAPpBundleName") > > SET(MACOSX_BUNDLE_SHORT_VERSION_STRING "short ver") > > > > # setup the bundle > > SET(BasicApp_BUNDLE_NAME "BasicApp") > > SET_TARGET_PROPERTIES(BasicApp PROPERTIES OUTPUT_NAME > > ${BasicApp_BUNDLE_NAME}) > > SET(BasicApp_BUNDLE_LOCATION "${CMAKE_INSTALL_PREFIX}") > > MESSAGE("ORIGINAL CMAKE_INSTALL_PREFIX: > ${CMAKE_INSTALL_PREFIX}") > > # make sure CMAKE_INSTALL_PREFIX ends in / > > STRING(LENGTH "${CMAKE_INSTALL_PREFIX}" LEN) > > MATH(EXPR LEN "${LEN} -1" ) > > STRING(SUBSTRING "${CMAKE_INSTALL_PREFIX}" ${LEN} 1 ENDCH) > > IF(NOT "${ENDCH}" STREQUAL "/") > > SET(CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/") > > ENDIF(NOT "${ENDCH}" STREQUAL "/") > > SET(CMAKE_INSTALL_PREFIX > > "${CMAKE_INSTALL_PREFIX}${BasicApp_BUNDLE_NAME}.app/Contents") > > > > MESSAGE("CHANGED CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}") > > > > INSTALL( > > TARGETS BasicApp > > RUNTIME DESTINATION bin > > BUNDLE DESTINATION "." ) > > > > INSTALL(FILES ${Dope_SOURCE_DIR}/ReadMe.txt DESTINATION "." ) > > > > SET(BasicAppFullPath > "${CMAKE_INSTALL_PREFIX}/MacOS/${BasicApp_BUNDLE_NAME}") > > MESSAGE("BasicAppFullPath: ${BasicAppFullPath}") > > > > # INSTALL(CODE "set(input_file > \"/MacOS/${BasicApp_BUNDLE_NAME}\")") > > MESSAGE("INSTALL CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}") > > INSTALL(CODE "set(lib_path \"/usr/local/lib\")") > > INSTALL(CODE "set(input_file > > > \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${BasicApp_BUNDLE_NAME}.app/Contents/MacOS/${BasicApp_BUNDLE_NAME}\")") > > INSTALL(SCRIPT > > "${Dope_SOURCE_DIR}/CMakeModules/CMakeIngestOSXBundleLibraries.cmake") > > > > INSTALL(FILES > > "${Dope_SOURCE_DIR}/data/models/clogo.obj" > > "${Dope_SOURCE_DIR}/data/models/clogo.mtl" > > DESTINATION > > "./${BasicApp_BUNDLE_NAME}.app/Contents/Resources/data/models/") > > > > MESSAGE("OSG VERSION: ${OPENSCENEGRAPH_VERSION}") > > > > SET(OSG_PLUGINS_DIR > > "/usr/local/lib/osgPlugins-${OPENSCENEGRAPH_VERSION}") > > INSTALL(FILES > > "${OSG_PLUGINS_DIR}/osgdb_obj.so" > > DESTINATION > > > "./${BasicApp_BUNDLE_NAME}.app/Contents/PlugIns/osgPlugins-${OPENSCENEGRAPH_VERSION}/") > > > > SET(CPACK_GENERATOR "DragNDrop") > > > > ENDIF(APPLE) > > > > I tried to use code from the cmake 2.8 qt dialog working example > > (among other things, the CMakeIngestOSXBundleLibraries.cmake comes > > from there) > > > > Ok, first post over :) > > /Filip > > > _______________________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Please keep messages on-topic and check the CMake FAQ at: > http://www.cmake.org/Wiki/CMake_FAQ > > Follow this link to subscribe/unsubscribe: > http://www.cmake.org/mailman/listinfo/cmake >
_______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake