C++ Qt qmake和distfile

C++ Qt qmake和distfile,c++,qt,qmake,C++,Qt,Qmake,因此,我正在学习使用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

因此,我正在学习使用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运行的文件来自另一个目录(默认情况下来自构建目录)

修复 所以你有两个选择:

  • 将项目->构建和运行->运行中的工作目录更改为
    %{sourceDir}
  • 将Projects->Build&Run->Build中的Build目录更改为
    ,或者将其保留为空
解释
  • 第一个选项是从项目所在的sourceDir运行程序(.exe on Windows),因此路径相对保持不变
  • 第二个选项将所有构建文件(即:Makefile、*.o和“.exe”)放在项目目录中(除非添加它们,否则它们不会出现在项目视图中),我更喜欢这种方式,因为现在项目目录包含了与之相关的所有内容

选择您最喜欢的,希望有帮助。

确保可以从应用程序的工作目录访问这些文件,然后使用相对路径?您可以使用Qt资源系统:问题是,如果我将这两个文件放在可执行文件的工作目录中,但我希望将这些文件直接包含在可执行文件中。我知道qt ressource系统,但我只是将qt用作IDE,我不想在这个项目中使用他们的API。