使c ++ app使用文件目录,而不是pwd

时间:2014-10-01 20:40:53

标签: c++ macos unix directory pwd

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

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

解决此问题的最简洁方法是什么?我想cd进入文件的目录,无论我从哪里运行程序。我在OSX上,并且对能够在所有unix机器上运行的解决方案感到兴奋。

2 个答案:

答案 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()会将工作目录更改为包含二进制文件的目录。