【问题标题】:How to use qmake properly in this case?在这种情况下如何正确使用 qmake?
【发布时间】:2016-02-25 08:15:20
【问题描述】:

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

\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

我的 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:没有这样的文件或目录。

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

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

代替:

#include "file1.h"

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

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

【问题讨论】:

    标签: c++ qt makefile qt-creator qmake


    【解决方案1】:

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

    为防止这种情况发生,请在 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
    

    【讨论】:

    • 它没有帮助。我遇到了同样的问题。
    • 您的专业文件在哪里?将它们添加到您问题中的目录结构中。
    • 查看我的编辑并与您的专业文件进行比较。使用完全相同的项目结构,这对我有用。
    • 为什么不添加 INCLUDEPATH += ../folder2/
    • 因为在您的示例中您要求 file1。但是对于您使用标头的每个其他文件夹,它都是完全相同的。