0

我正在尝试运行一个应用程序,应用程序。我通过在 app 目录中运行 ./app 来做到这一点。这个应用程序有一个依赖,graphics/file.bmp。当我在该目录中运行 ./app 时,一切正常。

如果我改为从父文件夹运行,则在运行 ./app_directory/app 时找不到 graphics/file.bmp

解决这个问题的最干净的方法是什么?无论我从哪里运行程序,我都想 cd 进入文件的目录。我在 OSX 上,并且会对适用于所有 unix 机器的解决方案感到兴奋。

4

2 回答 2

0

您可以尝试编写一个可以从任何目录运行的 bash 脚本,它会 cd 进入成功运行程序的目录,但这实际上不会更改终端所在的工作目录。如果您不知道该怎么做:制作一个名为 build 的文件(或任何您想要的文件)并将其放在父文件夹中。在该文件中放入以下代码:

cd app_directory
./app

创建脚本后运行chmod u+x <script-name>,这将使其成为可执行文件。完成此操作后,您就可以运行了./<script-name>,它应该可以正常运行您的程序。

于 2014-10-01T20:51:52.963 回答
0

您可以在第一行执行此操作main()

chdir(dirname(argv[0]));

dirname()从输入中删除最后一个路径组件("a/b/c"变成"a/b"),如果只有一个路径组件,则返回"."。将此返回值直接传递给chdir()会将工作目录更改为包含二进制文件的目录。

于 2014-10-01T20:59:09.683 回答