我有以下文件夹结构:
bin/ <-binary-file is in here
include/
src/
data/
Makefile
在我的代码,我用我的数据相对路径。 因此, “../data/xml/xmlFile.xml”。 这是好的,如果我是执行从斌/文件夹中的二进制文件:
brandonto@computer:~/PATH-TO-PROJECT/bin$ ./binary-file
argv[0] = ./binary-file
dirname(argv[0]) = .
但如果我是从主文件夹(或任何其他文件夹,不是的bin /文件夹)执行二进制:
brandonto@computer:~/PATH-TO-PROJECT$ bin/binary-file
argv[0] = bin/binary-file
dirname(argv[0]) = bin
该XML文件将不会被发现,因为“../data”现在会从主文件夹(或任何文件夹,您正在执行的程序时)转到上一级目录。
我怎么可能让这个二进制文件可以从我的系统上的任何目录下执行?
为了使问题更加清楚一点:
brandonto@brandonto-Aspire-S3-391:~/cpp-workspace/sdl-projects/sdl-space-shooter/bin$ ~/cpp-workspace/sdl-projects/sdl-space-shooter/bin/SpaceShooter
argv[0] = /home/brandonto/cpp-workspace/sdl-projects/sdl-space-shooter/bin/SpaceShooter
dirname(argv[0]) = /home/brandonto/cpp-workspace/sdl-projects/sdl-space-shooter/bin
brandonto@brandonto-Aspire-S3-391:~/cpp-workspace/sdl-projects/sdl-space-shooter/bin$ cd ..
brandonto@brandonto-Aspire-S3-391:~/cpp-workspace/sdl-projects/sdl-space-shooter$ ~/cpp-workspace/sdl-projects/sdl-space-shooter/bin/SpaceShooter
argv[0] = /home/brandonto/cpp-workspace/sdl-projects/sdl-space-shooter/bin/SpaceShooter
dirname(argv[0]) = /home/brandonto/cpp-workspace/sdl-projects/sdl-space-shooter/bin
Unable to load image ../data/graphics/background/darkPurple.png! SDL_image Error: Couldn't open ../data/graphics/background/darkPurple.png
Unable to load image ../data/graphics/sprites/meteorBrown_big1.png! SDL_image Error: Couldn't open ../data/graphics/sprites/meteorBrown_big1.png
在这里,我从斌/文件夹内从主文件夹内执行的二进制文件一次,然后一次。 二进制跑到离斌/文件夹内的罚款,但不能从主文件夹中找到的.png文件的相对路径。