【问题标题】:How to use a build system other than qmake with a Qt project?如何在 Qt 项目中使用 qmake 以外的构建系统?
【发布时间】:2016-06-12 15:45:33
【问题描述】:

在 qtcreator 中,模板 qt 项目有一个简单的 .pro 配置文件。 qmake 实用程序从 .pro 文件生成 Makefile,每个 Makefile 包含每个 qt 依赖源文件的大量包含:

release/moc_MainWindow.cpp: src/controller/Controller.hpp \
...
        ../../../../Qt/5.6/mingw49_32/include/QtWidgets/QMainWindow \
        ../../../../Qt/5.6/mingw49_32/include/QtWidgets/qmainwindow.h \
... 100 lines here ...
        ../../../../Qt/5.6/mingw49_32/include/QtWidgets/qpushbutton.h \
        ../../../../Qt/5.6/mingw49_32/include/QtWidgets/qabstractbutton.h \
        src/view/qt/MainWindow.hpp

我在配置 .pro 文件时遇到困难,所以我决定用另一个构建系统配置一个 qt 项目:例如 make、automake、cmake。

有没有办法自动配置任何构建系统以包含大量 qt 头文件?或者不包括它们,而是在没有 qtcreator 的情况下构建 qt 项目?

我的问题与Using Cmake with Qt Creator 不同,因为我不需要 qt 创建者来解决我的问题

【问题讨论】:

  • Qt Creator 不是构建系统!
  • "我在配置 .pro 文件时遇到了困难" 也许您应该先询问您真正的问题。您可以直接使用make,但您必须手动编写所有内容,而且这些不是很小的makefile,它们特定于给定的Qt 安装。使用 Qt 构建实际上只有三种选择:qmake、cmake 和 qbs。我认为 Qbs 最有希望,尽管它的文档不足,您必须阅读示例才能理解它是如何工作的。
  • >>Qt Creator 不是构建系统!我的意思是 qmake 当然

标签: qt build-system


【解决方案1】:

我的 CMake 模板:

cmake_minimum_required (VERSION 2.8)

project(qttest)
set(PROJECT_VERSION 0.0.1)

if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1y -pthread -fno-permissive -pedantic -Wall -Wextra -fPIC")
endif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")

set(QT_VERSION_REQ "5.2")

find_package(Qt5Core ${QT_VERSION_REQ} REQUIRED)
find_package(Qt5Quick ${QT_VERSION_REQ} REQUIRED)
find_package(Qt5Widgets ${QT_VERSION_REQ} REQUIRED)
find_package(Qt5DBus ${QT_VERSION_REQ} REQUIRED)

set(CMAKE_AUTOMOC ON)

include_directories(${CMAKE_CURRENT_SOURCE_DIR})

list(APPEND SOURCES
)

list(APPEND MAIN_SOURCES
    main.cpp
    ${SOURCES}
)

list(APPEND LIBS
    Qt5::Core
    Qt5::Quick
    Qt5::Widgets
    Qt5::DBus
)

add_executable(${PROJECT_NAME} ${MAIN_SOURCES})
target_link_libraries(${PROJECT_NAME} ${LIBS})

【讨论】:

  • 好的。我接受答案,但还添加了用于生成 ui 文件的字符串 set(CMAKE_AUTOUIC ON) include_directories( ${CMAKE_BINARY_DIR} )
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-16
  • 2021-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多