瀏覽代碼

Fix compilation error with Qt < 5.2.1

* moc-ing the Designer plugins requires the Qt5Designer module
* qt5_wrap_cpp does not have the TARGET parameter in Qt 5.1.0
Julien Finet 10 年之前
父節點
當前提交
258a558167
共有 2 個文件被更改,包括 24 次插入5 次删除
  1. 6 2
      CMake/ctkMacroBuildPlugin.cmake
  2. 18 3
      CMake/ctkMacroBuildQtPlugin.cmake

+ 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()