如何在Qt项目中使用qmake以外的生成系统?

如何在Qt项目中使用qmake以外的生成系统?,qt,build-system,Qt,Build System,在qtcreator中,模板qt项目有一个简单的.pro配置文件。 qmake实用程序从.pro文件生成Makefiles,每个Makefiles都包含许多与qt相关的源文件的包含项: release/moc_MainWindow.cpp: src/controller/Controller.hpp \ ... ../../../../Qt/5.6/mingw49_32/include/QtWidgets/QMainWindow \ ../../../../Qt/

在qtcreator中,模板qt项目有一个简单的.pro配置文件。 qmake实用程序从.pro文件生成Makefiles,每个Makefiles都包含许多与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项目

我的问题不同于,因为我不需要qt创建者来解决我的问题

我的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})

阅读文档:Qt Creator的可能副本不是构建系统!“我在配置.pro文件时遇到困难”也许您应该首先询问真正的问题。您可以直接使用
make
,但是您必须手工编写所有内容,而且这些文件不是很小的makefile,它们是特定于给定Qt安装的。使用Qt构建实际上只有三种选择:qmake、cmake和。我认为Qbs是最有前途的,尽管它的文档记录不足,您必须阅读示例才能理解它是如何工作的。>>QtCreator不是一个构建系统!我是说当然可以。我接受答案,但也添加用于生成ui文件集的字符串(CMAKE_AUTOUIC ON)include_目录(${CMAKE_BINARY_DIR})