在这种情况下如何正确使用 qmake?
How to use qmake properly in this case?
我在以下目录中有一个应用程序:
\Application
\GUI
MainWindow.cpp
MainWindow.h
main.cpp
gui.pro
gui.pro.user
\folder1
file1.cpp
file1.h
\folder2
file2.cpp
file2.h
我的应用程序可以 运行 两种模式:
- From the console
那个版本有效。我有一个负责处理依赖项的 makefile,因此我可以正常包含我的文件,因为它们位于同一目录中:
#include "file1.h"
而不是:
#include "../folder1/file1.h"
- With my GUI
我的 GUI 在没有应用程序的情况下工作 - 我使用 QtCreator 编译它。
现在我想将我的 GUI 与应用程序结合起来。所以我扩展了 .pro 文件:
SOURCES += main.cpp\
Mainwindow.cpp \
..\folder1\file1.cpp \
..\folder2\file2.cpp \
HEADERS += Mainwindow.h \
MyTextEdit.h \
..\folder1\file1.h \
..\folder2\file2.h \
然而,当我 运行 qmake 时,我得到以下错误:
file1.h: no such file or directory.
我调查了一下,结果是编译器期望
#include "../folder1/file1.h"
而不是:
#include "file1.h"
好吧,我可以替换它,但我也希望能够 运行 控制台版本。
我该如何解决? .pro 文件不是 makefile,因此我不能像在控制台版本的应用程序的 makefile 中那样使用 INC 变量。
您需要指定 header 的完整路径,否则编译器不知道在哪里可以找到该文件。
为防止出现这种情况,请在您的 GUI pro-File 中添加以下行:
INCLUDEPATH += "../folder1/"
同时检查您的 header 和源路径。好像少了一些斜杠。
编辑
我的完整工作 gui.pro 文件使用与上述相同的文件夹结构。这样一个简单的 #include "file1.h"
就可以在 gui 代码的每个文件中工作。
TEMPLATE=app
TARGET=gui
QT += widgets
INCLUDEPATH += ../folder1/
FORMS += \
mainwindow.ui
HEADERS += \
mainwindow.h \
../folder1/file1.h \
../folder2/file2.h
SOURCES += \
mainwindow.cpp \
main.cpp \
../folder1/file1.cpp \
../folder2/file2.cpp
我在以下目录中有一个应用程序:
\Application
\GUI
MainWindow.cpp
MainWindow.h
main.cpp
gui.pro
gui.pro.user
\folder1
file1.cpp
file1.h
\folder2
file2.cpp
file2.h
我的应用程序可以 运行 两种模式:
- From the console
那个版本有效。我有一个负责处理依赖项的 makefile,因此我可以正常包含我的文件,因为它们位于同一目录中:
#include "file1.h"
而不是:
#include "../folder1/file1.h"
- With my GUI
我的 GUI 在没有应用程序的情况下工作 - 我使用 QtCreator 编译它。
现在我想将我的 GUI 与应用程序结合起来。所以我扩展了 .pro 文件:
SOURCES += main.cpp\
Mainwindow.cpp \
..\folder1\file1.cpp \
..\folder2\file2.cpp \
HEADERS += Mainwindow.h \
MyTextEdit.h \
..\folder1\file1.h \
..\folder2\file2.h \
然而,当我 运行 qmake 时,我得到以下错误:
file1.h: no such file or directory.
我调查了一下,结果是编译器期望
#include "../folder1/file1.h"
而不是:
#include "file1.h"
好吧,我可以替换它,但我也希望能够 运行 控制台版本。
我该如何解决? .pro 文件不是 makefile,因此我不能像在控制台版本的应用程序的 makefile 中那样使用 INC 变量。
您需要指定 header 的完整路径,否则编译器不知道在哪里可以找到该文件。
为防止出现这种情况,请在您的 GUI pro-File 中添加以下行:
INCLUDEPATH += "../folder1/"
同时检查您的 header 和源路径。好像少了一些斜杠。
编辑
我的完整工作 gui.pro 文件使用与上述相同的文件夹结构。这样一个简单的 #include "file1.h"
就可以在 gui 代码的每个文件中工作。
TEMPLATE=app
TARGET=gui
QT += widgets
INCLUDEPATH += ../folder1/
FORMS += \
mainwindow.ui
HEADERS += \
mainwindow.h \
../folder1/file1.h \
../folder2/file2.h
SOURCES += \
mainwindow.cpp \
main.cpp \
../folder1/file1.cpp \
../folder2/file2.cpp