我的src目录中有3个.c文件,而在src的父目录中有一个Makefile。我所有的c文件都只使用标准头文件。 我在使用make命令时遇到的错误是
make:***没有规则将目标文件“ main.c”设置为“ main.o”。停止。
我尝试了人们在这里和那里提到的所有调整,但是无法解决问题。请帮助。
我也尝试包括vpath指令。
vpath src
vpath inc
CFLAGS=-I inc
output: main.o helloExec.o execDemo.o
$(CC) -o $(CFLAGS) $<
main.o: main.c
$(CC) -c $(CFLAGS) $< $(CFLAGS)
helloExec.o: helloExec.c
$(CC) -c $(CFLAGS) $< $(CFLAGS)
execDemo.o: execDemo.c
$(CC) -c $(CFLAGS) $< $(CFLAGS)
clean:
rm -f *.o output
#include<stdio.h>
int main()
{
printf("hello\n");
return 0;
}
#include<stdlib.h>
#include<unistd.h>
int main()
{
printf("execDemo with pid = %d\n", getpid());
return 0;
}
#include<stdlib.h>
#include<unistd.h>
int main()
{
printf("helloExec with pid = %d\n", getpid());
return 0;
}
答案 0 :(得分:0)
答案 1 :(得分:-1)
输出构建行$(CC) -o $(CFLAGS) $<
不正确:
-o
选项后面是输出(可执行)文件。
CFLAGS=-Iinc
output: main.o helloExec.o execDemo.o
$(CC) $< -o output
main.o: main.c
$(CC) -c $(CFLAGS) $< $(CFLAGS)
helloExec.o: helloExec.c
$(CC) -c $(CFLAGS) $< $(CFLAGS)
execDemo.o: execDemo.c
$(CC) -c $(CFLAGS) $< $(CFLAGS)
clean:
rm -f *.o output