This is actually ironic. The SDL.framework is actually ready to be used in a bundle in its default state which seems to be the exception to the rule. Typically the install_path embedded in the dylib or framework is either just the name of the library OR the complete path to the library/framework. So basically there needs to be an additional check in the BundleUtilities.cmake file to look for an install_path that begins with @executable_path or @loader_path and basically ignore the next few steps where the install_path is fixed up and copied into the bundle location. So look in the BundleUtilities.cmake file and see if you can patch it up.

___________________________________________________________
Mike Jackson                      www.bluequartz.net
Principal Software Engineer       mike.jack...@bluequartz.net
BlueQuartz Software               Dayton, Ohio


On Mar 5, 2010, at 8:39 AM, Francisco Requena wrote:

As on my previous my post, I got a bundle with SDL.framework embeeded.
On OS X, you can either use .framework and .dylib binaries. So, I got to use the BundleUtilities macro.

If CMake doesn't find the .framework, all works ok: I get 3 libraries (libSDL..) on Content/MacOS folder. If CMake finds the .framework, it just doesn't know (or it seems) how to handle it. What can I do?

Here's the CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)

project(openvolt)

set(APP_NAME OpenVolt)

include(FindSDL)
include(FindOpenGL)

include_directories(${SDL_INCLUDE_DIR})

add_executable(${APP_NAME} MACOSX_BUNDLE main.cpp)

target_link_libraries(${APP_NAME} ${SDL_LIBRARY} ${OPENGL_LIBRARIES})

string(REPLACE "-framework Cocoa" "" DIRS ${SDL_LIBRARY})
install(CODE "
  include(BundleUtilities)
fixup_bundle(\"${openvolt_BINARY_DIR}/${APP_NAME}.app\" \"\" \"$ {DIRS}\")
" COMPONENT Runtime)


And here's the output when I do 'make install':

[100%] Built target OpenVolt
Install the project...
-- Install configuration: ""
-- fixup_bundle
--   app='/Users/frarees/openvolt/build/OpenVolt.app'
--   libs=''
--   dirs='/Library/Frameworks/SDL.framework'
-- fixup_bundle: preparing...
-- warning: embedded item does not exist '/Users/frarees/openvolt/ build/OpenVolt.app/Contents/Frameworks/SDL.framework/Versions/1.3/SDL'
--
warning: cannot resolve item '@executable_path/../Frameworks/ SDL.framework/Versions/1.3/SDL'

  possible problems:
    need more directories?
    need to use InstallRequiredSystemLibraries?
    run in install tree instead of build tree?

-- warning: embedded item does not exist '/Users/frarees/openvolt/ build/OpenVolt.app/Contents/Frameworks/SDL.framework/Versions/1.3/SDL'
--
warning: cannot resolve item '@executable_path/../Frameworks/ SDL.framework/Versions/1.3/SDL'

  possible problems:
    need more directories?
    need to use InstallRequiredSystemLibraries?
    run in install tree instead of build tree?

-- fixup_bundle: copying...
-- 1/4: *NOT* copying '/Users/frarees/openvolt/build/OpenVolt.app/ Contents/MacOS/OpenVolt' -- 2/4: copying '@executable_path/../Frameworks/SDL.framework/ Versions/1.3/SDL'
-- fixup_bundle: fixing...
-- 3/4: fixing up '/Users/frarees/openvolt/build/OpenVolt.app/ Contents/MacOS/OpenVolt' -- 4/4: fixing up '/Users/frarees/openvolt/build/OpenVolt.app/ Contents/Frameworks/SDL.framework/Versions/1.3/SDL'
-- fixup_bundle: cleaning up...
-- fixup_bundle: verifying...
-- = = = = = ======================================================================
-- Analyzing app='/Users/frarees/openvolt/build/OpenVolt.app'
-- bundle='/Users/frarees/openvolt/build/OpenVolt.app'
-- executable='/Users/frarees/openvolt/build/OpenVolt.app/Contents/ MacOS/OpenVolt'
-- valid='1'
-- executable file 1: /Users/frarees/openvolt/build/OpenVolt.app/ Contents/MacOS/OpenVolt -- warning: embedded item does not exist '/Users/frarees/openvolt/ build/OpenVolt.app/Contents/Frameworks/SDL.framework/Versions/1.3/SDL'
--
warning: cannot resolve item '@executable_path/../Frameworks/ SDL.framework/Versions/1.3/SDL'

  possible problems:
    need more directories?
    need to use InstallRequiredSystemLibraries?
    run in install tree instead of build tree?

-- verified='1'
-- info='Verified 1 executable files in '/Users/frarees/openvolt/ build/OpenVolt.app''
--
-- verified='1'
-- info=''
--
-- fixup_bundle: done

_______________________________________________
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

Reply via email to