C ++获取Linux

时间:2016-09-14 02:03:22

标签: c++ linux clion

这个问题很多时候被问到,我提到了所有问题,但我需要有点不同。

我正在使用macbook - > Clion(IDE)for C ++ 我的程序文件位置 /Users/Kandarp/ClionProjects/SimulationParser/main.cpp

当我使用以下函数获取当前目录时,它会给出不同的文件(我认为编译和执行文件的实际路径)

string ExePath() {
char cwd[1024];
if (getcwd(cwd, sizeof(cwd)) != NULL) {
    fprintf(stdout, "Current working dir: %s\n", cwd);
    return cwd;
} else {
    perror("getcwd() error");
    return 0;
}}

它给出了以下答案: /Users/Kandarp/Library/Caches/CLion2016.2/cmake/generated/SimulationParser-50b8dc0e/50b8dc0e/Debug

但我需要我的.cpp文件所在的路径。我做错了什么? 请帮忙

2 个答案:

答案 0 :(得分:3)

你没有做错任何事。

getcwd()为您提供执行过程的当前目录。

当您指示用于构建C ++代码的任何工具来运行它时,它只是从该目录运行该进程。

C ++库中没有任何内容告诉应用程序源代码的位置。

如果您需要应用程序知道其源代码所在的位置,则需要将其作为参数传递给main(),或者将其放入某个配置文件,应用程序读取或任何类似的方法。

答案 1 :(得分:1)

您要做的是使用__FILE__宏,然后使用基本标记化来提取目录名称。

您的方法不起作用,因为在执行期间,当前目录是二进制目录,而不是编译单元目录。