Template:VTKQtCMakeLists: Difference between revisions
(Fine tuning) |
Waldyrious (talk | contribs) (spell out "MocHdrs") |
||
(8 intermediate revisions by 2 users not shown) | |||
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) | ||
if(${VTK_VERSION} VERSION_GREATER "6" AND VTK_QT_VERSION VERSION_GREATER "4") | |||
qt5_wrap_ui(UISrcs ${UI_FILES} ) | |||
add_executable({{{1}}} MACOSX_BUNDLE ${CXX_FILES} ${UISrcs} ${ | # CMAKE_AUTOMOC in ON so the MOC headers will be automatically wrapped. | ||
add_executable({{{1}}} MACOSX_BUNDLE | |||
${CXX_FILES} ${UISrcs} ${QT_WRAP}) | |||
qt5_use_modules({{{1}}} Core Gui) | |||
target_link_libraries({{{1}}} ${VTK_LIBRARIES}) | target_link_libraries({{{1}}} ${VTK_LIBRARIES}) | ||
else() | else() | ||
target_link_libraries({{{1}}} vtkHybrid QVTK vtkViews ${QT_LIBRARIES}) | 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() | endif() | ||
|lang=cmake}} | |lang=cmake}} | ||
==Download and Build {{{1}}}== | ==Download and Build {{{1}}}== | ||
Click [ | Click [https://github.com/lorensen/VTKWikiExamplesTarballs/raw/master/{{{1}}}.tar here to download {{{1}}}]. and its ''CMakeLists.txt'' file. | ||
Once the tarball ''{{{1}}}.tar'' has been downloaded and extracted, | Once the tarball ''{{{1}}}.tar'' has been downloaded and extracted, | ||
Line 40: | Line 64: | ||
cmake .. | cmake .. | ||
* If VTK is not installed but compiled on your system, you will need to specify the path to your VTK build: | * If VTK is not installed but compiled on your system, you will need to specify the path to your VTK build: | ||
cmake -DVTK_DIR=/home/me/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: | * If Qt is not found on your system, you will need to tell CMake where to find qmake: | ||
cmake -DQT_QMAKE_EXECUTABLE=/usr/something/qmake .. | cmake -DQT_QMAKE_EXECUTABLE:FILEPATH=/usr/something/qmake .. | ||
Build the project: | Build the project: | ||
Line 48: | Line 72: | ||
and run it: | and run it: | ||
./{{{1}}} | ./{{{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. |
Latest revision as of 16:07, 19 November 2015
CMakeLists.txt
<syntaxhighlight lang="cmake"> 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 MOC headers will be automatically wrapped. add_executable({{{1}}} MACOSX_BUNDLE ${CXX_FILES} ${UISrcs} ${QT_WRAP}) qt5_use_modules({{{1}}} Core Gui) 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()
</syntaxhighlight>
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.