Difference between revisions of "Template:VTKQtCMakeLists"

From KitwarePublic
Jump to navigationJump to search
Line 4: Line 4:
 
cmake_minimum_required(VERSION 2.8)
 
cmake_minimum_required(VERSION 2.8)
 
   
 
   
 +
if(POLICY CMP0020)
 +
  cmake_policy(SET CMP0020 NEW)
 +
endif()
 +
 
PROJECT({{{1}}})
 
PROJECT({{{1}}})
+
 
 
find_package(VTK REQUIRED)
 
find_package(VTK REQUIRED)
 
include(${VTK_USE_FILE})
 
include(${VTK_USE_FILE})
  
find_package(Qt4 REQUIRED)
+
if(${VTK_VERSION} VERSION_GREATER "6" AND VTK_QT_VERSION VERSION_GREATER "4")
include(${QT_USE_FILE})
+
  # Instruct CMake to run moc automatically when needed.
 +
  set(CMAKE_AUTOMOC ON)
 +
  find_package(Qt5Widgets REQUIRED QUIET)
 +
else()
 +
  find_package(Qt4 REQUIRED)
 +
  include(${QT_USE_FILE})
 +
endif()
  
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})  
+
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
  
 
file(GLOB UI_FILES *.ui)
 
file(GLOB UI_FILES *.ui)
Line 18: Line 28:
 
file(GLOB CXX_FILES *.cxx)
 
file(GLOB CXX_FILES *.cxx)
  
QT4_WRAP_UI(UISrcs ${UI_FILES})
+
if(${VTK_VERSION} VERSION_GREATER "6" AND VTK_QT_VERSION VERSION_GREATER "4")
QT4_WRAP_CPP(MOCSrcs ${QT_WRAP})
+
  qt5_wrap_ui(UISrcs ${UI_FILES} )
add_executable({{{1}}} MACOSX_BUNDLE ${CXX_FILES} ${UISrcs} ${MOCSrcs})
+
  # CMAKE_AUTOMOC in ON so the MocHdrs will be automatically wrapped.
+
  add_executable({{{1}}} MACOSX_BUNDLE
if(VTK_LIBRARIES)
+
    ${CXX_FILES} ${UISrcs} ${QT_WRAP})
  if(${VTK_VERSION} VERSION_LESS "6")
+
  #qt5_use_modules({{{1}}} Core)
     target_link_libraries({{{1}}} ${VTK_LIBRARIES} QVTK)
+
  target_link_libraries({{{1}}} ${VTK_LIBRARIES})
 +
else()
 +
  QT4_WRAP_UI(UISrcs ${UI_FILES})
 +
  QT4_WRAP_CPP(MOCSrcs ${QT_WRAP})
 +
  add_executable({{{1}}} MACOSX_BUNDLE ${CXX_FILES} ${UISrcs} ${MOCSrcs})
 +
 
 +
  if(VTK_LIBRARIES)
 +
    if(${VTK_VERSION} VERSION_LESS "6")
 +
      target_link_libraries({{{1}}} ${VTK_LIBRARIES} QVTK)
 +
     else()
 +
      target_link_libraries({{{1}}} ${VTK_LIBRARIES})
 +
    endif()
 
   else()
 
   else()
     target_link_libraries({{{1}}} ${VTK_LIBRARIES})
+
     target_link_libraries({{{1}}} vtkHybrid QVTK vtkViews ${QT_LIBRARIES})
 
   endif()
 
   endif()
else()
 
  target_link_libraries({{{1}}} vtkHybrid QVTK vtkViews ${QT_LIBRARIES})
 
 
endif()
 
endif()
 +
 
|lang=cmake}}
 
|lang=cmake}}
  

Revision as of 00:42, 20 October 2013

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)
 
if(POLICY CMP0020)
  cmake_policy(SET CMP0020 NEW)
endif()

PROJECT({{{1}}})

find_package(VTK REQUIRED)
include(${VTK_USE_FILE})

if(${VTK_VERSION} VERSION_GREATER "6" AND VTK_QT_VERSION VERSION_GREATER "4")
  # Instruct CMake to run moc automatically when needed.
  set(CMAKE_AUTOMOC ON)
  find_package(Qt5Widgets REQUIRED QUIET)
else()
  find_package(Qt4 REQUIRED)
  include(${QT_USE_FILE})
endif()

include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})

file(GLOB UI_FILES *.ui)
file(GLOB QT_WRAP *.h)
file(GLOB CXX_FILES *.cxx)

if(${VTK_VERSION} VERSION_GREATER "6" AND VTK_QT_VERSION VERSION_GREATER "4")
  qt5_wrap_ui(UISrcs ${UI_FILES} )
  # CMAKE_AUTOMOC in ON so the MocHdrs will be automatically wrapped.
  add_executable({{{1}}} MACOSX_BUNDLE
    ${CXX_FILES} ${UISrcs} ${QT_WRAP})
  #qt5_use_modules({{{1}}} Core)
  target_link_libraries({{{1}}} ${VTK_LIBRARIES})
else()
  QT4_WRAP_UI(UISrcs ${UI_FILES})
  QT4_WRAP_CPP(MOCSrcs ${QT_WRAP})
  add_executable({{{1}}} MACOSX_BUNDLE ${CXX_FILES} ${UISrcs} ${MOCSrcs})

  if(VTK_LIBRARIES)
    if(${VTK_VERSION} VERSION_LESS "6")
      target_link_libraries({{{1}}} ${VTK_LIBRARIES} QVTK)
    else()
      target_link_libraries({{{1}}} ${VTK_LIBRARIES})
    endif()
  else()
    target_link_libraries({{{1}}} vtkHybrid QVTK vtkViews ${QT_LIBRARIES})
  endif()
endif()

Download and Build {{{1}}}

Click here to download {{{1}}}. and its CMakeLists.txt file.

Once the tarball {{{1}}}.tar has been downloaded and extracted,

cd {{{1}}}/build

This example requires Qt and VTK.

  • If VTK and Qt are installed:
cmake ..
  • If VTK is not installed but compiled on your system, you will need to specify the path to your VTK build:
cmake -DVTK_DIR:PATH=/home/me/vtk_build ..
  • If Qt is not found on your system, you will need to tell CMake where to find qmake:
cmake -DQT_QMAKE_EXECUTABLE:FILEPATH=/usr/something/qmake  ..

Build the project:

make

and run it:

./{{{1}}}

WINDOWS USERS PLEASE NOTE: Be sure to add the VTK bin directory to your path. This will resolve the VTK dll's at run time. You may also need to add a Qt related path.