我正在尝试运行应用程序,应用程序。我通过在app目录中运行./app来做到这一点。此应用程序具有依赖项graphics / file.bmp。当我在该目录中运行./app时,一切正常。
如果我改为从父文件夹运行,则在运行时无法找到graphics / file.bmp ./app_directory/app
解决此问题的最简洁方法是什么?我想cd进入文件的目录,无论我从哪里运行程序。我在OSX上,并且对能够在所有unix机器上运行的解决方案感到兴奋。
答案 0 :(得分:0)
您可以尝试编写一个可以从任何目录运行的bash脚本,它将cd到成功运行该程序的目录中,但这实际上不会更改终端所在的工作目录。如果您不知道如何操作:创建一个名为build(或任何您想要的)的文件并将其放在父文件夹中。在该文件中输入以下代码:
cd app_directory
./app
创建脚本后运行chmod u+x <script-name>
,这将使其成为可执行文件。完成此操作后,您只需运行./<script-name>
即可运行您的程序。
答案 1 :(得分:0)
您可以在main()
的第一行执行此操作:
chdir(dirname(argv[0]));
dirname()
从输入中删除最后一个路径组件("a/b/c"
变为"a/b"
),如果只有一个路径组件,则返回"."
。将此返回值直接传递给chdir()
会将工作目录更改为包含二进制文件的目录。