Qt qmake 和 DISTFILES

Qt qmake and DISTFILES

所以我正在学习在 OpenGL 3.3 中编程,我使用 qtcreator 作为我的 IDE,使用 qmake 作为编译器。一切都很好,除了我必须使用 ifstream 读取 2 个文件(fragmentshader.frag 和 vertexshader.vert)。 我已将这两个文件包含在“.pro”中,如下所示:

TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += main.cpp \
shaders.cpp

LIBS += -lGLEW -lglfw -lGL -lX11 -lpthread -lXrandr -lXi

DISTFILES += \
vertexshader.vert \
fragmentshader.frag

HEADERS += \
shaders.h

并且在代码中我尝试直接读取 "vertexshader.vert" 和 "fragmentshader.frag"。

我的问题是:如何在我的应用程序中包含这些文件而无需指定绝对路径?

我有同样的问题,这是因为 Qt 是 运行ning 来自另一个目录的文件(默认情况下来自构建目录)。

修复

所以你有两个选择:

  • Projects->Build & 运行->运行 中的 Working directory 更改为 %{sourceDir}.
  • Projects->Build & 运行->Build 中将 Build 目录 更改为 . 或留空。

解释

  • 第一个选项 运行 您的程序(Windows 上的 .exe)来自您的项目所在的 sourceDir,因此路径将保持不变相对。
  • 第二个选项将所有构建文件(即:Makefile、*.o 和“.exe”)放在项目目录中(它们不会出现在项目中view unless your Add them), 我更喜欢这种方式,因为现在你的项目目录包含与之相关的所有内容。

选出您最喜欢的一项,希望对您有所帮助。