You need to set the "install_name" of the libHello.dylib so that the Bundle Script can find the library properly and fix those internal "install_name" entries.
Mike Jackson On May 13, 2014, at 8:32 AM, Romain LEGUAY <[email protected]> wrote: > Hello everyone, > I try to build a small Qt application (helloGUI) with a shared library > (hello). > Here is my application and library tree: > ├── CMakeLists.txt > ├── gui > │ ├── CMakeLists.txt > │ ├── bundle.cmake > │ ├── include > │ │ └── MainWindow.hpp > │ ├── src > │ │ ├── MainWindow.cpp > │ │ └── main.cpp > │ └── ui > │ └── mainwindow.ui > └── lib > ├── CMakeLists.txt > ├── Hello.cpp > └── Hello.h > > My root CMakeLists.txt add the two sub directory: lib then gui. > The lib CMakeLists.txt build a shared library (.dylib) and installed it > inside ${CMAKE_INSTALL_PREFIX}/helloGUI.app/Contents/Libraries. > The gui CMakeLists.txt build my Qt bundle (helloGUI.app) and installed it > inside ${CMAKE_INSTALL_PREFIX} then launch the script bundle.cmake. > bundle.cmake contains: > include(BundleUtilities) > fixup_bundle("${CMAKE_INSTALL_PREFIX}/helloGUI.app" > "${CMAKE_INSTALL_PREFIX}/helloGUI.app/Contents/Libraries/libHello.dylib" > "lib") > > If I don’t install it, my application works just fine. But after > installation, I have some errors: > > Install the project... > -- Install configuration: "" > -- Installing: > /MYPATH/TestQtCMake/build/install/helloGUI.app/Contents/Libraries/libHello.dylib > -- Installing: /MYPATH/TestQtCMake/build/install/./helloGUI.app > -- Installing: /MYPATH/TestQtCMake/build/install/./helloGUI.app/Contents > -- Installing: > /MYPATH/TestQtCMake/build/install/./helloGUI.app/Contents/Info.plist > -- Installing: /MYPATH/TestQtCMake/build/install/./helloGUI.app/Contents/MacOS > -- Installing: > /MYPATH/TestQtCMake/build/install/./helloGUI.app/Contents/MacOS/helloGUI > -- fixup_bundle > -- app='/MYPATH/TestQtCMake/build/install/helloGUI.app' > -- > libs='/MYPATH/TestQtCMake/build/install/helloGUI.app/Contents/Libraries/libHello.dylib' > -- dirs='lib' > -- fixup_bundle: preparing... > -- fixup_bundle: copying... > -- 1/10: *NOT* copying > '/MYPATH/TestQtCMake/build/install/helloGUI.app/Contents/Libraries/libHello.dylib' > -- 2/10: *NOT* copying > '/MYPATH/TestQtCMake/build/install/helloGUI.app/Contents/MacOS/helloGUI' > -- 3/10: copying > '/Users/rleguay/Qt5.2.1/5.2.1/clang_64/lib/QtCore.framework/Versions/5/QtCore' > -- 4/10: copying > '/Users/rleguay/Qt5.2.1/5.2.1/clang_64/lib/QtGui.framework/Versions/5/QtGui' > -- 5/10: copying > '/Users/rleguay/Qt5.2.1/5.2.1/clang_64/lib/QtWidgets.framework/Versions/5/QtWidgets' > -- fixup_bundle: fixing... > -- 6/10: fixing up > '/MYPATH/TestQtCMake/build/install/helloGUI.app/Contents/Libraries/libHello.dylib' > -- 7/10: fixing up > '/MYPATH/TestQtCMake/build/install/helloGUI.app/Contents/MacOS/helloGUI' > -- 8/10: fixing up > '/MYPATH/TestQtCMake/build/install/helloGUI.app/Contents/Frameworks/QtCore.framework/Versions/5/QtCore' > -- 9/10: fixing up > '/MYPATH/TestQtCMake/build/install/helloGUI.app/Contents/Frameworks/QtGui.framework/Versions/5/QtGui' > -- 10/10: fixing up > '/MYPATH/TestQtCMake/build/install/helloGUI.app/Contents/Frameworks/QtWidgets.framework/Versions/5/QtWidgets' > -- fixup_bundle: cleaning up... > -- fixup_bundle: verifying... > -- =========================================================================== > -- Analyzing app='/MYPATH/TestQtCMake/build/install/helloGUI.app' > -- bundle='/MYPATH/TestQtCMake/build/install/helloGUI.app' > -- > executable='/MYPATH/TestQtCMake/build/install/helloGUI.app/Contents/MacOS/helloGUI' > -- valid='1' > -- executable file 1: > /MYPATH/TestQtCMake/build/install/helloGUI.app/Contents/MacOS/helloGUI > -- warning: embedded item does not exist > '/MYPATH/TestQtCMake/build/install/helloGUI.app/Contents/MacOS/libHello.dylib' > -- > warning: cannot resolve item '@executable_path/../MacOS/libHello.dylib' > > possible problems: > need more directories? > need to use InstallRequiredSystemLibraries? > run in install tree instead of build tree? > > warning: target '@executable_path/../MacOS/libHello.dylib' is not absolute... > warning: target '@executable_path/../MacOS/libHello.dylib' does not exist... > error: > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool: > can't open file: @executable_path/../MacOS/libHello.dylib (No such file or > directory) > error: > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool: > can't open file: @executable_path/../MacOS/libHello.dylib (No such file or > directory) > -- verified='1' > -- info='Verified 1 executable files in > '/MYPATH/TestQtCMake/build/install/helloGUI.app'' > -- > -- verified='1' > -- info='' > -- > -- fixup_bundle: done > > I see that the script search libHello.dylib inside Contents/MacOS but I don’t > understand why. > Can we set this path please? > > Thank you. > > Best regards, > Romain > -- > > Powered by www.kitware.com > > Please keep messages on-topic and check the CMake FAQ at: > http://www.cmake.org/Wiki/CMake_FAQ > > Kitware offers various services to support the CMake community. For more > information on each offering, please visit: > > CMake Support: http://cmake.org/cmake/help/support.html > CMake Consulting: http://cmake.org/cmake/help/consulting.html > CMake Training Courses: http://cmake.org/cmake/help/training.html > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Follow this link to subscribe/unsubscribe: > http://www.cmake.org/mailman/listinfo/cmake -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake
