我正在尝试在用 C 编写的程序中包含文件的相对路径。目前对于我的程序
createShader(&shader,"/Users/myUsername/Documents/Programming/OpenGL/shaders/shaderFile.glsl");
不可移植。我想要的是我想要的是
createShader(&skyboxShader, "shaders/shaderFile.glsl");.
shaders目录是我的主程序目录下的一个目录。我的文件结构是
program
\include
\src
-> main.c
-> main.h
\shaders
-> shaderFile.glsl
谢谢。
最佳答案
你的可移植性概念太弱了。在程序中编码绝对路径通常是一个坏主意,但使其相对于源代码似乎同样有缺陷。我建议您采用一个简单的搜索路径算法,该算法首先在当前工作目录中查找,然后可能在用户主目录中的某个虚线子目录(隐藏)中查找,然后按照某些命令行参数或环境的指示多变的。假设有人还没有实现通用搜索路径函数,那么它在您编写的大多数程序中都会很有用。
关于C 获取文件而无需在unix中指定完整路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35299390/