[Solved] Build Qt 5.2.1 + VTK 6.1.0 + CMake 2.8.12.2
-
EDIT: OSX 10.9 problem Solved at the first post of the second page.
EDIT: Windows problem Solved a few posts down!Hi all,
Im trying to build VTK libraries with CMake and Qt 5.2.1 to use it inside the QT Creator. First i tried in Windows and i had to add this lines to the CMakeLists.txt (Because VTK tried to use QT4):
@if(WIN32)
set(CMAKE_LIBRARY_PATH "$ENV{PROGRAMFILES(X86)}\Windows Kits\8.0\Lib\win8\um\x64")
endif()SET(VTK_QT_VERSION "5")
SET(VTK_Group_Qt 1)@After that i could generate the project and compile it with visual studio 2012. Later, i copied the QVTKWidget into the plugins/designer of the qt-creator, but the QVTKWidget didnt appear into the editor.
I tried also to do it in OSX (same versions of all), and i managed to configure and generate the make files to compile VTK, but when i compiled it , i got an error:
@error: garbage collection is no longer supported
make[2]: *** [Rendering/OpenGL/CMakeFiles/vtkRenderingOpenGL.dir/vtkCocoaRenderWindowInteractor.mm.o] Error 1
make[1]: *** [[Rendering/OpenGL/CMakeFiles/vtkRenderingOpenGL.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs...@Can someone help me to got this working? Thanks in advance :).
-
Hi and welcome to devnet,
The probable problem you have on Windows is that the Qt and compiler version you used to build the plugin doesn't match Qt Creator's Qt
-
Hi SGaist and thanks for the answer and the welcome!
I didn't understand what do you mean about the matching of Qt Creator's Qt. I did it with this versions:
CMake 2.8.12 ( Visual studio 11 x64 compiler) + VTK 6.10 + Qt Options into CMake = VTK Compiled for use with QT (all correct using the flags i told before).
Then i got the QVTKWidget.dll and .lib and i copied them into the Qt installation (plugins/designer) as i saw in some tutorials, but QtCreator doesn't detect them (And QVTKWidget doesn't appear into the editor). Can you explain it please?
Thanks again!
-
AFAIK, Qt Creator is build once and shipped with the necessary Qt libraries for all windows packages. Qt Creator is not tied to the Qt version you use for your development.
When you create a plugin, you must use the same compiler and Qt version that were used to build Qt Creator.
-
Hi again SGaist,
Finally i found the problem. I tried to open QTCreator (which i don't know with what version of Qt uses to compile ^^) but instead of that, i found that i must open the Designer.exe of Qt to edit the .ui files. Into the designer appears the QVTKWidget(in QtCreator doesn't appear) and i can integrate it with my Qt App :).
Thanks for all!!!
In OSX i didn't found the solution yet...if anyone could help me with the configuration i'll appreciate it!!
-
You're welcome !
Are you sure you copied the plugin at the right place ? Have a look at the Qt Creator's documentation, there's a chapter about creating plugins and IIRC they also talk about the designer plugin
What configuration problem do you have on OS X?
-
I'll take a look into the Qt Creator documentation to see if i place it in the right place :).
About the problem with OSX, i described it into the first post:
I managed to configure and generate the unix make files to compile VTK, but when i compiled it , i got an error:
@error: garbage collection is no longer supported
make[2]: *** [Rendering/OpenGL/CMakeFiles/vtkRenderingOpenGL.dir/vtkCocoaRenderWindowInteractor.mm.o] Error 1
make[1]: *** [[Rendering/OpenGL/CMakeFiles/vtkRenderingOpenGL.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs...@I don't know how to solve it!
Thanks!!
-
I would say, you are using a "too recent" version of Xcode, have a look at the project for something like "GCC_ENABLE_OBJC_GC = supported;" and remove it
-
Sorry im a little lost (just starting with OSX, QT and VTK...). I'm compiling with "make" and i'm not using XCode for anything. Where can i found that option?
-
Somewhere in your Makefile then. grep through them for GCC_ENABLE_OBJC_GC
-
Hi again SGaist and thanks for your patience,
I searched for GCC_ENABLE_OBJ_GC at the Makefile, and is not in there. I tried building with XCode and the same error appears, so i looked for that into the "Build Settings" in XCode and it doesn't appear, so i defined it and set it to unsupported (just testing). Again i got the same error (Garbage collection is no longer supported).
By the way, as i see into the "documentation":https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html , the default value is unsupported, but seems that the problem is here because of the message.I'll be trying to solve this, what do you think?
Thanks again.
-
Did you search in the sources ?
-
I searched into the sources, the "Makefile" build and the "XCode" build with GREP recursively into the folder tree but no result was found!
-
And the Xcode project itself ?
-
Into the “Build Settings” in XCode i couldn't find it (The documentation says it must be defined there, but if it isn't, it's "unsupported" by default).
Thanks for your help.
-
Did you search for only garbage ?
-
Hello again,
Finally I got the answer just searching the web! After the changes i could compile VTK and QT together :).
The problem was at the CMakeLists of VTK and not on the QT ones. It was one feature not supported by XCode as you say (VTK_REQUIRED_OBJCXX_FLAGS ). The problem will be solved in VTK 6.2 as you can see in the Summary of changes: "http://www.vtk.org/Wiki/VTK#Summary_of_Changes":http://www.vtk.org/Wiki/VTK#Summary_of_Changes
If anyone gets this problem, just delete or comment this lines from the CMakeList.txt at the top of the VTK source:
@IF(APPLE)
Being a library, VTK may be linked in either GC (garbage collected)
processes or non-GC processes. Default to "GC supported" so that both
GC and MRR (manual reference counting) are supported.
SET(VTK_OBJCXX_FLAGS_DEFAULT "-fobjc-gc")
SET(VTK_REQUIRED_OBJCXX_FLAGS ${VTK_OBJCXX_FLAGS_DEFAULT} CACHE STRING "Extra flags for Objective-C++ compilation")
MARK_AS_ADVANCED(VTK_REQUIRED_OBJCXX_FLAGS)
ENDIF(APPLE)@As you see the problem is solved at VTK github repository setting this flag to empty : "VTK CMakeLists":https://github.com/Kitware/VTK/blob/master/CMakeLists.txt
Thank you so much for your help and i hope i will continue contributing here as a Qt developer =).
-
You're welcome !
Glad you found out !
Sure you will :)
Happy coding !