Makefile结构

时间:2015-12-10 02:54:02

标签: c makefile

我在C中制作程序,我想知道如何使用Makefile构建和运行我的程序。

我有三个文件:

main.c
count.c
bin2csv.c

我也有这些标题:

bin2csv.h
count.h
struct.h

这是我的makefile:

CC = gcc
OBJS = main.o count.o bin2csv.o
HEADERS = struct.h count.h bin2csv.h
APP_NAME = project2

all:    $(APP_NAME)
$(APP_NAME):     $(OBJS) $(HEADERS)
       $(CC)  $(OBJS) -o $(APP_NAME)

main.o:
       $(CC) -c main.c
count.o:
       $(CC) -c count.c
bin2csv.o:
       $(CC) -c bin2csv.c
clean:
       rm -f *.o $(APP_NAME)

我的问题如下: 这个make文件发生了什么?它遍历层次结构并将这些.c文件编译成目标文件,包括标题?

我如何运行和编译我的程序? 我尝试通过添加print语句在main.c中进行更改,但我认为使用gcc进行编译会抛弃makefile。我知道我可以使用命令make我不相信任何改变。

2 个答案:

答案 0 :(得分:3)

您需要说/openam/identity/attributes?subjectid=" + token个文件取决于.o个文件:

.c

否则,main.o: main.c <---- HERE $(CC) -c main.c count.o: count.c <---- HERE $(CC) -c count.c bin2csv.o: bin2csv.c <---- HERE 没有理由认为需要重新制作make个文件。

答案 1 :(得分:1)

为了防止重新制作(因此添加依赖项),我重新命令您使用变量列出from reportlab.lib.styles import ParagraphStyle from reportlab.pdfbase.pdfmetrics import registerFont from reportlab.platypus import Paragraph, PageBreak, SimpleDocTemplate, Spacer registerFont(TTFont('Calibri', 'Calibri.ttf')) # Just some font imports registerFont(TTFont('Calibri-Bold', 'calibrib.ttf')) pH = ParagraphStyle(name = 'Header', fontName = 'Calibri-Bold', fontSize = 13, leftIndent = 20, firstLineIndent = -20, spaceBefore = 10, leading = 16) sH = ParagraphStyle(name = 'SubHeader', fontName = 'Calibri', fontSize = 12, leftIndent = 40, firstLineIndent = -20, spaceBefore = 5, leading = 16) doc = SimpleDocTemplate('Reports\\PDFname.pdf') story = [Spacer(1, 2 * inch)] story.append(Paragraph('<a href = page3.html#0>1. First Title</a>', pH)) # Linking the anchor to reference 0 story.append(Paragraph('<a href = page3.html#1>1.1. First Subtitle</a>', sH)) # Linking the anchor to reference 1 story.append(PageBreak()) story.append(Paragraph('<a name = page3.html#0></a> 1. First Title', pH)) # Creating anchor with reference 0 story.append(Paragraph('<a name = page3.html#1></a><br/> 1.1. First Subtitle', style)) # Creating anchor with reference 1 doc.build(story) 个文件而不是.c个并推导出对象名称:

.o

SRC= main.c \ count.c \ bin2csv.c OBJS= $(SRC:.c=.o) 将包含您的OBJS文件名,您可以按照与之相同的方式使用它:

.o

清洁规则

$(APP_NAME):        $(OBJS) $(HEADERS)
    $(CC) -o $(APP_NAME) $(OBJS)

如果您想要更改标题文件,可以将clean: rm -f $(OBJS) $(APP_NAME) 添加到-I以添加特定的标题目录:

gcc