Я пытаюсь построить приложение на Linux с Qt, где я могу установить положение курсора. Проект управляется с помощью CMake.
CMakeLists.txt:
cmake_minimum_required(VERSION 2.8.4)
project(Project)
add_definitions(-std=gnu++14 -std=c++14 -Wall -Wextra)
set(CMAKE_PREFIX_PATH "/home/elmewo/Libraries/Qt/5.3/gcc_64")
set(CMAKE_AUTOMOC ON)
find_package(Qt5Core REQUIRED)
find_package(Qt5Quick REQUIRED)
find_package(Qt5Gui REQUIRED)
include_directories(${CMAKE_SOURCE_DIR}/src)
set(SOURCE_FILES src/main.cpp)
add_executable(Project ${SOURCE_FILES})
qt5_use_modules(Project Core Quick Gui)
Пакеты найдены CMake. Но когда я пытаюсь
#include <QCursor>
мой компилятор говорит
fatal error: QCursor: file or directory not found
Мне удалось скомпилировать еще одно базовое приложение QGuiApplication на той же машине.
Файл QCursor находится в $ {CMAKE_PREFIX_PATH} / include / QtGui.
Я что-то пропустил?
Кажется, что вы зависите от 2.8.4, так что, по крайней мере, вам нужно либо изменить правила сборки основываясь на этом или вам нужно будет обновить зависимость как минимум до версии 2.8.9 cmake:
Использование Qt 5 с CMake старше 2.8.9
Если используется CMake старше 2.8.9, макрос qt5_use_modules недоступен. Попытка его использования приведет к ошибке.
Чтобы использовать Qt 5 с версиями CMake старше 2.8.9, необходимо использовать команды target_link_libraries, include_directories и add_definitions и вручную указать требования moc с помощью qt5_generate_moc или qt5_wrap_cpp:
Поэтому, пожалуйста, добавьте их, если вы придерживаетесь старого cmake:
# Add the include directories for the Qt 5 Widgets module to
# the compile lines.
include_directories(${Qt5Core_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Quick_INCLUDE_DIRS})
#Link the helloworld executable to the Qt 5 widgets library.
target_link_libraries(helloworld Qt5::Core Qt5::Gui Qt5::Quick)