Profi_GMan
@Profi_GMan

Как создать проект qt gui с cmake?

Доброго времени суток!
Имеется графическое приложение на c++ qt. Он изначально использовал qmake.
Потом я решил, что нужно перейти на cmake. Написал вот такой cmakelists.txt:
cmakelists.txt
cmake_minimum_required (VERSION 2.6)
project(yourdroid)
option(QT5BUILD "Build using Qt5 libs" TRUE)
# Tell CMake to run moc when necessary:
set(CMAKE_AUTOMOC ON)
# As moc files are generated in the binary dir, tell CMake
# to always look for includes there:
set(CMAKE_INCLUDE_CURRENT_DIR ON)

# Widgets finds its own dependencies (QtGui and QtCore).
find_package(Qt5Widgets REQUIRED)
find_package(Qt5Core)
find_package(Qt5 COMPONENTS Widgets Core REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")

# The Qt5Widgets_INCLUDES also includes the include directories for
# dependencies QtCore and QtGui
include_directories(${Qt5Core_INCLUDES})

# We need add -DQT_WIDGETS_LIB when using QtWidgets in Qt 5.
add_definitions(${Qt5Widgets_DEFINITIONS})

# Executables fail to build with Qt 5 in the default configuration
# without -fPIE. We add that here.
set(CMAKE_CXX_FLAGS "${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
#qt5_use_modules(yourdroid core gui widgets)
set(yourdroid_SOURCES "data.cpp" "log.cpp" "main.cpp" "window.cpp" "install.cpp" "cmd.cpp" "console.cpp" "bkisofs/bkAdd.c" "bkisofs/bkCache.c" "bkisofs/bkDelete.c" "bkisofs/bkError.c" "bkisofs/bkExtract.c" "bkisofs/bkGet.c" "bkisofs/bkIoWrappers.c" "bkisofs/bkLink.c" "bkisofs/bkMangle.c" "bkisofs/bkMisc.c" "bkisofs/bkPath.c" "bkisofs/bkRead.c" "bkisofs/bkRead7x.c" "bkisofs/bkSet.c" "bkisofs/bkSort.c" "bkisofs/bkTime.c" "bkisofs/bkWrite.c" "bkisofs/bkWrite7x.c")
set(yourdroid_HEADERS "data.h" "log.h" "window.h" "enum.h" "install.h" "version.h" "cmd.h" "console.h" "bkisofs/bk.h" "bkisofs/bkAdd.h" "bkisofs/bkCache.h" "bkisofs/bkDelete.h" "bkisofs/bkError.h" "bkisofs/bkExtract.h" "bkisofs/bkGet.h" "bkisofs/bkInternal.h" "bkisofs/bkIoWrappers.h" "bkisofs/bkLink.h" "bkisofs/bkMangle.h" "bkisofs/bkMisc.h" "bkisofs/bkPath.h" "bkisofs/bkRead.h" "bkisofs/bkRead7x.h" "bkisofs/bkSet.h" "bkisofs/bkSort.h" "bkisofs/bkTime.h" "bkisofs/bkWrite.h" "bkisofs/bkWrite7x.h")
add_executable(yourdroid ${yourdroid_SOURCES} ${yourdroid_HEADERS} ${Qt})

Но при компиляции, выдаётся ошибка "Не найден QObject". Т.е., cmake не нашёл\не подключил QtCore.
Тогда я нашёл, что можно использовать qt5_use_modules. Я вставил qt5_use_modules(yourdroid core gui widgets), но cmake пишет, мол первым параметром должна идти существующая цель. Где её достать\создать?
зы В cmake я новичок
зыы Про qt5_wrap_ui тоже слышал, но даже не пробовал ибо надо сначала ту проблему решить
Заранее огромное спасибо! Уже перекурил все маны, перелапатил весь яндекс...
  • Вопрос задан
  • 1044 просмотра
Решения вопроса 1
Profi_GMan
@Profi_GMan Автор вопроса
Не заметил важной детали, qt5_use_modules должно стоять после add_executable, всё заработало
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
vt4a2h
@vt4a2h
Senior software engineer (C++/Qt/boost)
На что-то такое я уже отвечал: Как подключить qt к cmake?
Начините с минимального проекта из пары файлов. Заведётся, добавляйте всё остальное.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы