[vtkusers] [VTK] Creating an OS X bundle for a VTK example using Qt

Jon Haitz Legarreta jhlegarreta at vicomtech.org
Mon Dec 15 06:18:20 EST 2014


Hi there,
we are having some trouble when trying to create an OS X bundle of an
imaging software of our own that uses ITK, VTK and Qt.

We are using VTK 6.1.0 and Qt 5.3.2. And our OS X is Yosemite (10.10).

In order to track the problem down, we tried to generate such a bundle for
one of the examples of VTK that uses Qt: QtVTKRenderWindows.

The modified CMakeLists.txt is attached.

We found that there seems to be a bug filed in kitware's CMake project in
mantis [1]. It dates back to 2013. It seems to be still open.

I am posting below the errors we get when trying to run our *.app just in
case they are of any help.


Is this a problem strictly related to CMake, or either VTK or either Qt for
OS X platforms?


Does anybody know how to solve this issue?


Thank you,
JON HAITZ





[1] http://public.kitware.com/Bug/view.php?id=14365

[-] Error trace:

When executing the *.app, the application crashes, and OS X's crash report
shows this message (this is just the beginning):

Process:               QtVTKRenderWindows [17872]
Path:
/Users/USER/Desktop/QtVTKRenderWindows.app/Contents/MacOS/QtVTKRenderWindows
Identifier:            QtVTKRenderWindows
Version:               ??? (???)
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
Responsible:           QtVTKRenderWindows [17872]
User ID:               501
Date/Time:             2014-12-15 10:30:23.381 +0100
OS Version:            Mac OS X 10.10.1 (14B25)
Report Version:        11
Anonymous UUID:        E9092016-A746-70A3-34F4-DC5791286273
Sleep/Wake UUID:       BAEA81DE-427D-44D8-BA6D-0189EBDA3FFD
Time Awake Since Boot: 42000 seconds
Time Since Wake:       5500 seconds
Crashed Thread:        0  Dispatch queue: com.apple.main-thread
Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Application Specific Information:
abort() called
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib            0x00007fff89fc9282 __pthread_kill + 10
1   libsystem_c.dylib             0x00007fff8f9bab73 abort + 129
2   QtCore                            0x00000001084a6649
qt_message_fatal(QtMsgType, QMessageLogContext const&, QString const&) + 9
3   QtCore                            0x00000001084a7af1
QMessageLogger::fatal(char const*, ...) const + 161
4   QtGui                         0x0000000108ade948
QGuiApplicationPrivate::createPlatformIntegration() + 5672
5   QtGui                         0x0000000108ade96b
QGuiApplicationPrivate::createEventDispatcher() + 27
6   QtCore                            0x00000001086ccc41
QCoreApplication::init() + 113
7   QtCore                            0x00000001086ccbb7
QCoreApplication::QCoreApplication(QCoreApplicationPrivate&) + 39
8   QtGui                         0x0000000108adc08e
QGuiApplication::QGuiApplication(QGuiApplicationPrivate&) + 14
9   QtWidgets                     0x0000000109085aae
QApplication::QApplication(int&, char**, int) + 206
10                                    0x0000000106c06c2c main + 60
11  libdyld.dylib                 0x00007fff948c85c9 start + 1



If we try to execute the *.app from the command line, the error displayed
reads:

MAC0001-D:Desktop usuario$ open QtVTKRenderWindows.app
LSOpenURLsWithRole() failed with error -10810 for the file
/Users/usuario/Desktop/QtVTKRenderWindows.app.
MAC0001-D:Desktop usuario$
QtVTKRenderWindows.app/Contents/MacOS/QtVTKRenderWindows
This application failed to start because it could not find or load the Qt
platform plugin "cocoa".

Reinstalling the application may fix this problem.
Abort trap: 6
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20141215/5da9cda0/attachment.html>
-------------- next part --------------
project(QtVTKRenderWindows)

cmake_minimum_required(VERSION 2.6)

if(POLICY CMP0020)
  cmake_policy(SET CMP0020 NEW)
endif()

find_package(VTK COMPONENTS
  vtkCommonCore
  vtkFiltersSources
  vtkGUISupportQt
  vtkIOImage
  vtkInteractionImage
)
include(${VTK_USE_FILE})


if("${VTK_QT_VERSION}" STREQUAL "")
  message(FATAL_ERROR "VTK was not built with Qt")
endif()

# Set your files and resources here
set( Srcs QtVTKRenderWindowsApp.cxx QtVTKRenderWindows.cxx)

set( Hdrs QtVTKRenderWindows.h )

set( MOC_Hdrs QtVTKRenderWindows.h )

set( UIs QtVTKRenderWindows.ui )

include_directories(
  ${CMAKE_CURRENT_BINARY_DIR}
  ${CMAKE_CURRENT_SOURCE_DIR}
)

# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)

INCLUDE(BundleUtilities)
if(VTK_QT_VERSION VERSION_GREATER "4")
  find_package(Qt5Widgets REQUIRED QUIET)
  qt5_wrap_ui(UI_Srcs ${UIs})

  # CMAKE_AUTOMOC in ON so the MocHdrs will be automatically wrapped.
  add_executable(QtVTKRenderWindows MACOSX_BUNDLE ${Srcs} ${Hdrs} ${UI_Srcs} ${MOC_Hdrs})
  qt5_use_modules(QtVTKRenderWindows Core Gui Widgets)
  target_link_libraries(QtVTKRenderWindows ${VTK_LIBRARIES})
else()
  find_package(Qt4 REQUIRED)
  include(${QT_USE_FILE})
  # Use what VTK built with
  set(QT_QMAKE_EXECUTABLE ${VTK_QT_QMAKE_EXECUTABLE} CACHE FILEPATH "")
  set(QT_MOC_EXECUTABLE ${VTK_QT_MOC_EXECUTABLE} CACHE FILEPATH "")
  set(QT_UIC_EXECUTABLE ${VTK_QT_UIC_EXECUTABLE} CACHE FILEPATH "")
  qt4_wrap_ui(UI_Srcs ${UIs})

  add_executable(QtVTKRenderWindows ${Srcs} ${Hdrs} ${UI_Srcs} ${MOC_Hdrs})
  target_link_libraries(QtVTKRenderWindows ${QT_LIBRARIES} ${VTK_LIBRARIES})
endif()

SET(BU_CHMOD_BUNDLE_ITEMS TRUE)
FIXUP_BUNDLE(/Users/emedica/Development/Binaries/VTK6_git_unix_Qt5/bin/QtVTKRenderWindows.app "" "${QT_INSTALL_PREFIX}/bin")
VERIFY_BUNDLE_PREREQUISITES(/Users/emedica/Development/Binaries/VTK6_git_unix_Qt5/bin/QtVTKRenderWindows.app QtVTKRenderWindows_BUNDLE_PREREQUISITES QtVTKRenderWindows_BUNDLE_PREREQUISITES_INFO)
MESSAGE(WARNING "QtVTKRenderWindows_BUNDLE_PREREQUISITES:${QtVTKRenderWindows_BUNDLE_PREREQUISITES}(${QtVTKRenderWindows_BUNDLE_PREREQUISITES_INFO})")


More information about the vtkusers mailing list