我正在尝试在C / C ++中阅读“ Makefile ”
它的工作原理是:system("make -C /Users/MyNAME/Desktop/Folder flash");
“ make flash ”是运行该文件的命令, / Users / MyNAME / Desktop / Folder 是
文件路径。此代码有效,但如何在本地创建文件路径,以便从相同的
中读取调试文件夹(程序所在的位置)而不是手动编写它?
答案 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将查看当前工作目录。