在这种情况下如何正确使用 qmake

How to use qmake properly in this case?

本文关键字:qmake 何正确 这种情况下      更新时间:2023-10-16

我在以下目录中有一个应用程序:

Application
   GUI
      MainWindow.cpp
      MainWindow.h
      main.cpp
      gui.pro
      gui.pro.user
  folder1
      file1.cpp
      file1.h
  folder2
      file2.cpp
      file2.h

我的应用程序可以在两种模式下运行:

  1. 从控制台

该版本有效。我有一个处理依赖项的 makefile,所以我可以正常包含我的文件,因为它们位于同一目录中:

#include "file1.h"

而不是:

#include "../folder1/file1.h"
  1. 使用我的图形用户界面

我的GUI在没有应用程序的情况下工作 - 我使用QtCreator编译它。

现在我想将我的 GUI 与应用程序结合起来。所以我扩展了 .pro 文件:

SOURCES += main.cpp
    Mainwindow.cpp 
    ..folder1file1.cpp 
    ..folder2file2.cpp 
HEADERS += Mainwindow.h 
    MyTextEdit.h 
   ..folder1file1.h 
    ..folder2file2.h 

但是,当我运行qmake时,出现以下错误:

file1.h:没有这样的文件或目录。

我调查了一下,结果发现编译器期望

#include "../folder1/file1.h" 

而不是:

#include "file1.h"

好吧,我可以替换它,但我也希望能够运行控制台版本。

我该如何解决它?.pro 文件不是生成文件,因此我不能像在应用程序的控制台版本中的生成文件中那样使用 INC 变量。

您需要指定标头的完整路径,否则编译器不知道在哪里可以找到该文件。

为了防止这种情况,请在 GUI 的 pro-File 中添加以下行:

INCLUDEPATH += "../folder1/"

还要检查标头和源路径。似乎缺少一些斜杠。

编辑

我的完整工作 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