ソースを参照

Merge pull request #550 from finetjul/add-qt5-to-vtk-widgets

Add qt5 to vtk widgets
Julien Finet 10 年 前
コミット
6219641694
共有4 個のファイルを変更した39 個の追加9 個の削除を含む
  1. 6 2
      CMake/ctkMacroBuildPlugin.cmake
  2. 18 3
      CMake/ctkMacroBuildQtPlugin.cmake
  3. 15 2
      CMakeExternals/VTK.cmake
  4. 0 2
      CMakeLists.txt

+ 6 - 2
CMake/ctkMacroBuildPlugin.cmake

@@ -178,11 +178,15 @@ macro(ctkMacroBuildPlugin)
 
   # Wrap
   if (CTK_QT_VERSION VERSION_GREATER "4")
+    set(target)
+    if(Qt5Core_VERSION VERSION_GREATER "5.2.0")
+      set(target TARGET ${lib_name})
+    endif()
     if(MY_MOC_SRCS)
       # this is a workaround for Visual Studio. The relative include paths in the generated
       # moc files can get very long and can't be resolved by the MSVC compiler.
       foreach(moc_src ${MY_MOC_SRCS})
-        QT5_WRAP_CPP(MY_MOC_CPP ${moc_src} OPTIONS -f${moc_src} -DHAVE_QT5 ${MY_MOC_OPTIONS} TARGET ${lib_name})
+        QT5_WRAP_CPP(MY_MOC_CPP ${moc_src} OPTIONS -f${moc_src} -DHAVE_QT5 ${MY_MOC_OPTIONS} ${target})
       endforeach()
     endif()
     QT5_WRAP_UI(MY_UI_CPP ${MY_UI_FORMS})
@@ -194,7 +198,7 @@ macro(ctkMacroBuildPlugin)
       # this is a workaround for Visual Studio. The relative include paths in the generated
       # moc files can get very long and can't be resolved by the MSVC compiler.
       foreach(moc_src ${MY_MOC_SRCS})
-        QT4_WRAP_CPP(MY_MOC_CPP ${moc_src} OPTIONS -f${moc_src} ${MY_MOC_OPTIONS} TARGET ${lib_name})
+        QT4_WRAP_CPP(MY_MOC_CPP ${moc_src} OPTIONS -f${moc_src} ${MY_MOC_OPTIONS} ${target})
       endforeach()
     endif()
     QT4_WRAP_UI(MY_UI_CPP ${MY_UI_FORMS})

+ 18 - 3
CMake/ctkMacroBuildQtPlugin.cmake

@@ -88,7 +88,12 @@ macro(ctkMacroBuildQtPlugin)
   # Wrap
   set(MY_QRC_SRCS "")
   if(CTK_QT_VERSION VERSION_GREATER "4")
-    qt5_wrap_cpp(MY_MOC_CPP ${MY_MOC_SRCS} TARGET ${lib_name} OPTIONS -DHAVE_QT5)
+    set(target)
+    if(Qt5Core_VERSION VERSION_GREATER "5.2.0")
+      set(target TARGET ${MY_LIBNAME})
+    endif()
+    qt5_wrap_cpp(MY_MOC_CPP ${MY_MOC_SRCS} OPTIONS -DHAVE_QT5 ${target})
+
     if(DEFINED MY_RESOURCES)
       qt5_add_resources(MY_QRC_SRCS ${MY_RESOURCES})
     endif()
@@ -181,12 +186,22 @@ macro(ctkMacroBuildQtPlugin)
 endmacro()
 
 macro(ctkMacroBuildQtDesignerPlugin)
+  if(CTK_QT_VERSION VERSION_GREATER "4")
+    find_package(Qt5Designer REQUIRED)
+    add_definitions(${Qt5Designer_DEFINITIONS})
+    include_directories(${Qt5Designer_INCLUDE_DIRS})
+  endif()
   ctkMacroBuildQtPlugin(
     PLUGIN_DIR designer
     ${ARGN})
   if(CTK_QT_VERSION VERSION_GREATER "4")
-    find_package(Qt5Designer REQUIRED)
-    target_link_libraries(${lib_name} Qt5::Designer)
+    cmake_parse_arguments(MY
+      "" # no options
+      "NAME;EXPORT_DIRECTIVE;FOLDER;PLUGIN_DIR" # one value args
+      "SRCS;MOC_SRCS;UI_FORMS;INCLUDE_DIRECTORIES;TARGET_LIBRARIES;RESOURCES" # multi value args
+      ${ARGN}
+      )
+    target_link_libraries(${MY_NAME} Qt5::Designer)
   endif()
 endmacro()
 

+ 15 - 2
CMakeExternals/VTK.cmake

@@ -54,6 +54,19 @@ if(NOT DEFINED VTK_DIR AND NOT ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
       )
   endif()
 
+  if(CTK_QT_VERSION VERSION_LESS "5")
+    list(APPEND additional_vtk_cmakevars
+      -DVTK_QT_VERSION:STRING=4
+      -DDESIRED_QT_VERSION:STRING=4
+      )
+  else()
+    list(APPEND additional_vtk_cmakevars
+      -DVTK_QT_VERSION:STRING=5
+      -DDESIRED_QT_VERSION:STRING=5
+      -DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}
+      )
+  endif()
+
   ExternalProject_Add(${proj}
     ${${proj}_EXTERNAL_PROJECT_ARGS}
     SOURCE_DIR ${CMAKE_BINARY_DIR}/${proj}
@@ -69,10 +82,10 @@ if(NOT DEFINED VTK_DIR AND NOT ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
       -DVTK_WRAP_PYTHON:BOOL=${CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK}
       -DVTK_WRAP_JAVA:BOOL=OFF
       -DBUILD_SHARED_LIBS:BOOL=ON
-      -DDESIRED_QT_VERSION:STRING=4
       -DVTK_USE_GUISUPPORT:BOOL=ON
       -DVTK_USE_QVTK_QTOPENGL:BOOL=ON
-      -DVTK_USE_QT:BOOL=ON
+      -DVTK_USE_QT:BOOL=ON # VTK 5
+      -DVTK_Group_Qt:BOOL=ON # VTK 6
       -DVTK_LEGACY_REMOVE:BOOL=ON
       -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}
     DEPENDS

+ 0 - 2
CMakeLists.txt

@@ -502,13 +502,11 @@ ctk_lib_option(Scripting/Python/Widgets
                "Build the Python Widgets library" OFF)
 
 # VTK libraries have not yet been tested with Qt5
-if(CTK_QT_VERSION VERSION_LESS "5")
 ctk_lib_option(Visualization/VTK/Core
                "Build the VTK Core library" OFF)
 
 ctk_lib_option(Visualization/VTK/Widgets
                "Build the VTK Widgets library" OFF)
-endif()
 
 ctk_lib_option(CommandLineModules/Core
                "Build the Command Line Module core library" OFF)