我想读的 “的Makefile” 在C/C++C/C++ - 查找的Makefile文件路径可编程
它的工作原理是这样做的:system("make -C /Users/MyNAME/Desktop/Folder flash");
“使Flash” 是命令来运行该文件和/Users/MyNAME/Desktop/Folder是
文件路径。此代码有效,但我如何使本地文件路径,从相同的
读取debug文件夹(程序所在的位置),而无需手动写入文件?
我想读的 “的Makefile” 在C/C++C/C++ - 查找的Makefile文件路径可编程
它的工作原理是这样做的:system("make -C /Users/MyNAME/Desktop/Folder flash");
“使Flash” 是命令来运行该文件和/Users/MyNAME/Desktop/Folder是
文件路径。此代码有效,但我如何使本地文件路径,从相同的
读取debug文件夹(程序所在的位置),而无需手动写入文件?
您可能想要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
线运行。
这是比我的更好的解决方案,除非有人看到原因,否则我会在5分钟内删除我的。 – 2011-12-20 15:57:35
我的代码也可以运行,但是我怎样才能从当前目录运行我的程序正在运行的地方 – user1104856 2011-12-20 16:02:32
请解释一下为什么要'make'一次运行在两个目录中:程序所在的目录和'/ Users/MYNAME /桌面/ Folder'。 – 2011-12-20 16:04:01
恩,在那里留下路?
make flash
将做make和make将看当前的工作目录。
它说:make:***没有规则做目标'闪光灯'。停止。 – user1104856 2011-12-20 15:53:32
你可以使用getcwd()
来获取当前工作目录:
char cmd[1040];
char cwd[1024];
if (getcwd(cwd, sizeof(cwd)) != NULL)
{
snprintf(cmd, sizeof(cmd), "make -C \"%s\" flash", cwd);
system(cmd);
}
它说make:***没有规则使target成为'flash'。停止。 – user1104856 2011-12-20 16:10:36
我想在最后得到当前可执行文件的路径而不包含可执行文件名。 – user1104856 2011-12-20 16:56:22
你是什么意思是*阅读文件* - 你似乎是运行它。 – 2011-12-20 15:50:55
对不起,我想指向相同的文件夹中的生成文件,而不写这个长的手动文件路径 – user1104856 2011-12-20 15:52:43
你问,“我怎么能从当前目录运行make,我的程序正在运行?”不会那就是,省略'-C/path/here'位? – BRFennPocock 2011-12-20 15:53:29