[英]Creating a makefile for C program
有人可以帮我为该程序创建一个makefile吗? 我尝试过一个,但是没有用...谢谢!
#include <string.h>
#include <stdlib.h>
#include "MakeArg.c"
int main()
{
char cmdline[256];
char **argv;
printf("doit# ");
for (;;)
{
scanf("%s",cmdline);
if (strcmp(cmdline,"q")==0)
break;
else
{
printf("doit# ");
if (fork()==0)
{
if (MakeArg(cmdline," ",&argv)>0)
execvp(argv[0],argv);
}
wait(NULL);
}
}
exit(0);
}
这是我目前拥有的东西,但是它不起作用:
CC = gcc
CFLAGS = -c -Wall -ansi -pedantic
SOURCES = MakeArg.c doit.c
OBJECTS = $(SOURCES:.c=.o)
EXECUTABLE = doit
all: $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) -o $@ $(OBJECTS)
%.o: %.c $(HEADER)
$(CC) $(CFLAGS) -o $@ $<
clean:
rm f *.o $(EXECUTABLE)
只是一些错误:
1)您还需要在发布的文件中包含以下标头:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
2)在makefile的干净目标中,您缺少'f'前面的'-'。 应该是rm -f。
3)另外,请确保在Makefile中的每个配方之前都有制表符(而不是空格)。 很难从您的帖子中得知您是否(或没有)这样做。
4)另外,不建议包含.c文件。
尝试这样的事情:
CC = gcc
CFLAGS = -Wall -ansi -pedantic
SOURCES = MakeArg.c doit.c
OBJECTS = $(SOURCES:.c=.o)
EXECUTABLE = doit
all: $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) -o $@ $^
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
$(RM) -f $(OBJECTS) $(EXECUTABLE)
//
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include "MakeArg.h"
int main()
{
char cmdline[256];
char **argv;
printf("doit# ");
for (;;)
{
scanf("%s",cmdline);
if (strcmp(cmdline,"q")==0)
break;
else
{
printf("doit# ");
if (fork()==0)
{
if (MakeArg(cmdline," ",&argv)>0)
execvp(argv[0],argv);
}
wait(NULL);
}
}
exit(0);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.