如何在 Qt 项目中使用 qmake 以外的构建系统?
How to use a build system other than qmake with a Qt project?
在 qtcreator 中,模板 qt 项目有一个简单的 .pro 配置文件。
从 .pro 文件 qmake 实用程序生成 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 creator 来解决我的问题
我的 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})
在 qtcreator 中,模板 qt 项目有一个简单的 .pro 配置文件。 从 .pro 文件 qmake 实用程序生成 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 creator 来解决我的问题
我的 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})