phi*_*lus 5 c++ linux directory macos executable
我编写了一个 C++ 软件,该软件需要从其所在的文件夹中读取文件,然后在同一文件夹中写入其他文件。
目前,我通过 shell 导航到复制了可执行文件的文件夹,然后使用./executable_name.
我想通过双击来执行它。如果我这样做,软件告诉我它找不到输入文件,那么就好像它没有在正确的文件夹中执行。
我认为有两种方法:
无论如何,我不知道该怎么做。
有人可以帮帮我吗?
大多数桌面软件执行程序时应将当前工作目录 (CWD) 设置为可执行文件的位置。大多数还支持桌面链接或程序快捷方式,允许您自行设置 CWD。这可能是最简单的途径,但这取决于您运行的桌面环境。
您的下一个选择是编写一个 shell 脚本/批处理文件,在其自己的目录中执行您的程序:
#!/bin/sh
cd /path/to/program
./myprogram
Run Code Online (Sandbox Code Playgroud)
然后从桌面执行该命令,而不是直接执行可执行文件。
最后,您可以使程序本身与 CWD 无关。为此,您需要在将路径传递给系统调用的所有位置添加路径解析代码。首先您需要知道可执行文件的位置。在 C++ 中没有符合标准的方法可以做到这一点,但有特定于平台的方法。一旦知道该路径,您就可以解析该基本路径的所有相对路径。StackOverflow 上存在几个关于如何做到这一点的问题;这是一个开始的地方。