Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CMake with Qt3d for Qt5?

Tags:

c++

cmake

qt5

qt3d

I have installed Qt5 and Qt3d from the ubuntu-developers repository (I'm under Ubuntu 13.04) and I would like to compile a very simple application with CMake (my version is 2.8.10.1). A working CMakeLists.txt for a Qt helloworld is the following :

cmake_minimum_required(VERSION 2.8.8)

project(testproject)

# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)

# Find the QtWidgets library
find_package(Qt5Widgets)

# Tell CMake to create the helloworld executable
add_executable(helloworld helloworld.cpp)

# Use the Widgets module from Qt 5.
qt5_use_modules(helloworld Widgets)

But what would be the CMakeLists.txt of a basic Qt3d program like this example : https://gitorious.org/wiki-sources/wiki-sources/trees/master/qt3d/glview

like image 634
Vincent Avatar asked May 20 '13 05:05

Vincent


People also ask

How does CMake find qt5?

In order for find_package to be successful, Qt 5 must be found below the CMAKE_PREFIX_PATH, or the Qt5_DIR must be set in the CMake cache to the location of the Qt5WidgetsConfig. cmake file. The easiest way to use CMake is to set the CMAKE_PREFIX_PATH environment variable to the install prefix of Qt 5.

What is CMake Qt GUI?

Qt based user interface for CMake (cmake-gui) CMake is used to control the software compilation process using simple platform and compiler independent configuration files. CMake generates native makefiles and workspaces that can be used in the compiler environment of your choice.


1 Answers

Qt3d is a regular Qt module, just like Qt Widgets. So you should add Qt3d to your project just as you do it for Widgets:

cmake_minimum_required(VERSION 2.8.8)
project(testproject)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
find_package(Qt5Widgets)
find_package(Qt53D)
add_executable(helloworld teapotview.cpp main.cpp)
qt5_use_modules(helloworld Widgets 3D)

I've tested this CMakeLists.txt with Teapot example. It's available here. Note that the example you've posted was written for Qt4 and will not work with Qt5.

I've used Ubuntu 13.04 with qt3d5-dev package available in the main repository.

like image 170
Pavel Strakhov Avatar answered Oct 18 '22 21:10

Pavel Strakhov