C / C ++ - 可编程地查找Makefile文件路径

时间:2011-12-20 15:49:07

标签: c++ c shell makefile

我正在尝试在C / C ++中阅读“ Makefile

它的工作原理是:system("make -C /Users/MyNAME/Desktop/Folder flash");

make flash ”是运行该文件的命令, / Users / MyNAME / Desktop / Folder

文件路径。此代码有效,但如何在本地创建文件路径,以便从相同的

中读取

调试文件夹(程序所在的位置)而不是手动编写它?

3 个答案:

答案 0 :(得分:4)

您可能需要int chdir(const char *path);功能。例如:

#include <unistd.h>

/* ... */

chdir("/Users/MyNAME/Desktop/Folder");
system("make flash");

<unistd.h>中还有许多其他有用的功能,它们应该出现在任何基于POSIX的系统上。 Check here为大名单。

编辑:如果路径不是常量,您可能希望将其作为命令行参数提供给您的程序:

#include <unistd.h>
#include <stdio.h>

/* ... */

int main(int argc, char* argv[])
{
    if(argc < 2)
    {
        fprintf(stderr, "Usage: %s <path>\n", argv[0]);
        return 1;
    }

    chdir(argv[1]);
    system("make flash");

    /* ... */

    return 0;
}

使用./foo /Users/MyNAME/Desktop/Folder之类的行运行它。

答案 1 :(得分:1)

您可以使用getcwd()获取当前工作目录:

char cmd[1040];
char cwd[1024];
if (getcwd(cwd, sizeof(cwd)) != NULL)
{
   snprintf(cmd, sizeof(cmd), "make -C \"%s\" flash", cwd);
   system(cmd);
}

答案 2 :(得分:0)

嗯,离开那里的路径?

make flash

将执行make和make将查看当前工作目录。