I have a project containing several applications (which are sub projects), each 
of which links against some Qt libraries which are built as dylibs, but are not 
part of the project. Qt libraries and headers are found using find-package 
which is working perfectly.

I’m currently trying to switch from Qt 5.3.1 to Qt 5.5.1, but am experiencing 
problems with fixup_bundle on OS X (everything else seems to work fine).
As far as I’ve gathered Qt has introduced support for rpaths between those two 
version and this seems to be the cause of my problems.

Building a single application works and said application starts up correctly, 
but building the install target will give me the following output:

-- fixup_bundle: preparing...
-- 
warning: cannot resolve item 'libQt5Core_debug.5.dylib'

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

-- warning: gp_resolved_file_type non-absolute file 'libQt5Core_debug.5.dylib' 
returning type 'other' -- possibly incorrect
-- 
warning: cannot resolve item 'libQt5Core_debug.5.dylib'

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

warning: target 'libQt5Core_debug.5.dylib' is not absolute...
warning: target 'libQt5Core_debug.5.dylib' does not exist...
CMake Error at 
/Applications/CMake.app/Contents/share/cmake-3.4/Modules/GetPrerequisites.cmake:800
 (message):
  
  
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool
  failed: 1

  error:
  
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool:
  can't open file: libQt5Core_debug.5.dylib (No such file or directory)

Call Stack (most recent call first):
  
/Applications/CMake.app/Contents/share/cmake-3.4/Modules/GetPrerequisites.cmake:925
 (get_prerequisites)
  
/Applications/CMake.app/Contents/share/cmake-3.4/Modules/BundleUtilities.cmake:555
 (get_prerequisites)
  
/Applications/CMake.app/Contents/share/cmake-3.4/Modules/BundleUtilities.cmake:804
 (get_bundle_keys)
  someApplication/someApplication/cmake_install.cmake:115 (fixup_bundle)


I’ll try to provide sufficient yet minimal information to pinpoint the root 
cause of the problem.
In my top CMakeLists.txt I have the following:

set (
                QT_REQUIRED_PACKAGES
                        Core
                        Gui
                        Widgets
)

set( QT_ROOT_PATH "/usr/local/Qt-5.5.1" )
set( QT_REQUIRED_PACKAGES ${QT_REQUIRED_PACKAGES} MacExtras )

set( 
        QT_PLUGINS_DIR
                "${QT_ROOT_PATH}/plugins"
)

set ( CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "${QT_ROOT_PATH}/bin/" )

FOREACH(QT_PACKAGE ${QT_REQUIRED_PACKAGES})
        set( QT_PACKAGE_WITH_PREFIX "Qt5${QT_PACKAGE}" )
        set( "${QT_PACKAGE_WITH_PREFIX}_DIR" 
"${QT_ROOT_PATH}/lib/cmake/${QT_PACKAGE_WITH_PREFIX}" )
        find_package( "${QT_PACKAGE_WITH_PREFIX}" REQUIRED )
        include_directories( ${${QT_PACKAGE_WITH_PREFIX}_INCLUDE_DIRS} )

        set_target_properties( "Qt5::${QT_PACKAGE}" PROPERTIES 
MAP_IMPORTED_CONFIG_DEBUG "DEBUG")
        set_target_properties( "Qt5::${QT_PACKAGE}" PROPERTIES 
MAP_IMPORTED_CONFIG_RELEASE "RELEASE")
        set_target_properties( "Qt5::${QT_PACKAGE}" PROPERTIES 
MAP_IMPORTED_CONFIG_RELWITHDEBINFO "RELEASE")
ENDFOREACH(QT_PACKAGE)

add_definitions( ${QT_DEFINITIONS} )
set( CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR} )

set( CMAKE_MACOSX_RPATH “" )

set_property( GLOBAL PROPERTY USE_FOLDERS ON )

add_subdirectory( someApplication )




in the someApplication CMakeLists.txt I have the following:

set(
        someApplication_Qt_LIBRARIES
                ${Qt5Core_LIBRARIES} 
                ${Qt5Widgets_LIBRARIES} 
)
set_target_properties( someApplication PROPERTIES INSTALL_RPATH 
"${QT_ROOT_PATH}/lib" )
foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )
    install( TARGETS someApplication DESTINATION bin/${OUTPUTCONFIG} 
CONFIGURATIONS ${OUTPUTCONFIG} )
endforeach()
        
add_custom_command( TARGET someApplication POST_BUILD COMMAND mkdir -p 
${CMAKE_INSTALL_PREFIX}/LocalizationTools/someApplication/Debug/plugins/platforms/
 )
add_custom_command( TARGET someApplication POST_BUILD COMMAND cp -Rf 
"${QT_PLUGINS_DIR}/platforms/libqcocoa_debug.dylib" 
${CMAKE_INSTALL_PREFIX}/LocalizationTools/someApplication/Debug/plugins/platforms/
  )
        
add_custom_command( TARGET someApplication POST_BUILD COMMAND mkdir -p 
${CMAKE_INSTALL_PREFIX}/LocalizationTools/someApplication/Release/plugins/platforms/
 )
add_custom_command( TARGET someApplication POST_BUILD COMMAND cp -Rf 
"${QT_PLUGINS_DIR}/platforms/libqcocoa.dylib" 
${CMAKE_INSTALL_PREFIX}/LocalizationTools/someApplication/Release/plugins/platforms/
  )
                
add_custom_command( TARGET someApplication POST_BUILD COMMAND mkdir -p `dirname 
$<TARGET_FILE: someApplication >`/../plugins )
add_custom_command( TARGET someApplication POST_BUILD COMMAND cp -Rf 
${CMAKE_INSTALL_PREFIX}/LocalizationTools/someApplication/$<$<CONFIG:Debug>:Debug>$<$<NOT:$<CONFIG:Debug>>:Release>/plugins/
 `dirname $<TARGET_FILE: someApplication >`/../plugins/  )

add_custom_command( TARGET someApplication POST_BUILD COMMAND chmod -R +w 
`dirname $<TARGET_FILE: someApplication >` )

set( APP 
"${CMAKE_INSTALL_PREFIX}/bin/\${CMAKE_INSTALL_CONFIG_NAME}/someApplication.app" 
)
        
set( DIRS 
        ${APP}/Contents/plugins/platforms
)
        
install( CODE "
        file( WRITE \"${APP}/Contents/Resources/qt.conf\" \"[Paths]\\nPlugins = 
plugins\\n\" )
        " COMPONENT Runtime
)
                
foreach( DYNAMIC_LIBRARY ${someApplication_DYNAMIC_LIBRARIES} )
        add_custom_command( TARGET someApplication POST_BUILD COMMAND cp -Rf 
$<TARGET_FILE:${DYNAMIC_LIBRARY}> `dirname $<TARGET_FILE: someApplication >` )
endforeach()

install( CODE "
        file( GLOB_RECURSE QT_PLATFORM_PLUGINS 
\"${APP}/Contents/plugins/platforms/*${CMAKE_SHARED_LIBRARY_SUFFIX}\" )
        include( BundleUtilities )
        fixup_bundle( \"${APP}\"   \"\${QT_PLATFORM_PLUGINS}\"   \"${DIRS}\" )
        " COMPONENT Runtime
)


Any help is greatly appreciated.

Kind regards,

Greg.

-- 

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://public.kitware.com/mailman/listinfo/cmake

Reply via email to