C 创建make文件
我知道互联网上有无数关于makefiles的资源,但我仍然不理解。目前我有3个c文件PolyCalculator.main.c PolyCalculator.c PolyCalculator.h和Polyfunctions.c 到目前为止我有C 创建make文件,c,makefile,C,Makefile,我知道互联网上有无数关于makefiles的资源,但我仍然不理解。目前我有3个c文件PolyCalculator.main.c PolyCalculator.c PolyCalculator.h和Polyfunctions.c 到目前为止我有 PolyCalculator: PolyCalculator.o PolyCalculatorMain.c gcc -Wall -ggdb -o PolyCalculator PolyCalculatorMain.c PolyCalculator.
PolyCalculator: PolyCalculator.o PolyCalculatorMain.c
gcc -Wall -ggdb -o PolyCalculator PolyCalculatorMain.c PolyCalculator.o
PolyCalculator.o: PolyCalculator.c
gcc -Wall -ggdb -c PolyCalculator.c PolyCalculator.h
clean:
rm PolyCalculator *.o *~ *#
如果您对填写此文件有任何帮助或解释,我们将不胜感激。
注意我只是开始,所以我不想要任何复杂的代码,因为在编译命令中我无法理解它,通常您不会指定.h文件。预处理器(在编译器之前运行)在遇到#include语句时会包含它们。这是我唯一能看到的 .h文件确实作为依赖项显示在Makefiles中,因为对它们的更改可能需要重新编译使用它们的代码 我想说的是,基本规则是在依赖项行中包含任何内容,如果这些内容发生更改,则需要重新编译
PolyCalculator: PolyCalculator.o PolyFunctions.o PolyCalculatorMain.c
gcc -Wall -ggdb -o PolyCalculator PolyCalculatorMain.c PolyCalculator.o PolyFunctions.o
PolyCalculator.o: PolyCalculator.c PolyCalculator.h
gcc -Wall -ggdb -c PolyCalculator.c
PolyFunctions.o: PolyFunctions.c PolyFunctions.h
gcc -Wall -ggdb -c PolyFunctions.c
clean:
rm PolyCalculator *.o *~ *#
Makefiles允许您拥有可重用的变量。例如,您可以使用
变量中的编译器选项:
options=-Wall -ggdb
obj_files=PolyCalculator.o PolyFunctions.o
PolyCalculator: ${obj_files} PolyCalculatorMain.c
gcc -Wall -ggdb -o PolyCalculator PolyCalculatorMain.c ${obj_files}
PolyCalculator.o: PolyCalculator.c PolyCalculator.h
gcc -Wall -ggdb -c PolyCalculator.c
PolyFunctions.o: PolyFunctions.c PolyFunctions.h
gcc -Wall -ggdb -c PolyFunctions.c
clean:
rm PolyCalculator *.o *~ *#
然后你用括号和一个美元符号
gcc ${options}
您还可以将其分解:
debug=-ggdb
warnings=-Wall
options=${warnings} ${debug}
还可以将所有对象文件合并到一个变量中:
options=-Wall -ggdb
obj_files=PolyCalculator.o PolyFunctions.o
PolyCalculator: ${obj_files} PolyCalculatorMain.c
gcc -Wall -ggdb -o PolyCalculator PolyCalculatorMain.c ${obj_files}
PolyCalculator.o: PolyCalculator.c PolyCalculator.h
gcc -Wall -ggdb -c PolyCalculator.c
PolyFunctions.o: PolyFunctions.c PolyFunctions.h
gcc -Wall -ggdb -c PolyFunctions.c
clean:
rm PolyCalculator *.o *~ *#
在compile命令中,通常不指定.h文件。预处理器(在编译器之前运行)在遇到#include语句时会包含它们。这是我唯一能看到的 .h文件确实作为依赖项显示在Makefiles中,因为对它们的更改可能需要重新编译使用它们的代码 我想说的是,基本规则是在依赖项行中包含任何内容,如果这些内容发生更改,则需要重新编译
PolyCalculator: PolyCalculator.o PolyFunctions.o PolyCalculatorMain.c
gcc -Wall -ggdb -o PolyCalculator PolyCalculatorMain.c PolyCalculator.o PolyFunctions.o
PolyCalculator.o: PolyCalculator.c PolyCalculator.h
gcc -Wall -ggdb -c PolyCalculator.c
PolyFunctions.o: PolyFunctions.c PolyFunctions.h
gcc -Wall -ggdb -c PolyFunctions.c
clean:
rm PolyCalculator *.o *~ *#
Makefiles允许您拥有可重用的变量。例如,您可以使用
变量中的编译器选项:
options=-Wall -ggdb
obj_files=PolyCalculator.o PolyFunctions.o
PolyCalculator: ${obj_files} PolyCalculatorMain.c
gcc -Wall -ggdb -o PolyCalculator PolyCalculatorMain.c ${obj_files}
PolyCalculator.o: PolyCalculator.c PolyCalculator.h
gcc -Wall -ggdb -c PolyCalculator.c
PolyFunctions.o: PolyFunctions.c PolyFunctions.h
gcc -Wall -ggdb -c PolyFunctions.c
clean:
rm PolyCalculator *.o *~ *#
然后你用括号和一个美元符号
gcc ${options}
您还可以将其分解:
debug=-ggdb
warnings=-Wall
options=${warnings} ${debug}
还可以将所有对象文件合并到一个变量中:
options=-Wall -ggdb
obj_files=PolyCalculator.o PolyFunctions.o
PolyCalculator: ${obj_files} PolyCalculatorMain.c
gcc -Wall -ggdb -o PolyCalculator PolyCalculatorMain.c ${obj_files}
PolyCalculator.o: PolyCalculator.c PolyCalculator.h
gcc -Wall -ggdb -c PolyCalculator.c
PolyFunctions.o: PolyFunctions.c PolyFunctions.h
gcc -Wall -ggdb -c PolyFunctions.c
clean:
rm PolyCalculator *.o *~ *#
在compile命令中,通常不指定.h文件。预处理器(在编译器之前运行)在遇到#include语句时会包含它们。这是我唯一能看到的 .h文件确实作为依赖项显示在Makefiles中,因为对它们的更改可能需要重新编译使用它们的代码 我想说的是,基本规则是在依赖项行中包含任何内容,如果这些内容发生更改,则需要重新编译
PolyCalculator: PolyCalculator.o PolyFunctions.o PolyCalculatorMain.c
gcc -Wall -ggdb -o PolyCalculator PolyCalculatorMain.c PolyCalculator.o PolyFunctions.o
PolyCalculator.o: PolyCalculator.c PolyCalculator.h
gcc -Wall -ggdb -c PolyCalculator.c
PolyFunctions.o: PolyFunctions.c PolyFunctions.h
gcc -Wall -ggdb -c PolyFunctions.c
clean:
rm PolyCalculator *.o *~ *#
Makefiles允许您拥有可重用的变量。例如,您可以使用
变量中的编译器选项:
options=-Wall -ggdb
obj_files=PolyCalculator.o PolyFunctions.o
PolyCalculator: ${obj_files} PolyCalculatorMain.c
gcc -Wall -ggdb -o PolyCalculator PolyCalculatorMain.c ${obj_files}
PolyCalculator.o: PolyCalculator.c PolyCalculator.h
gcc -Wall -ggdb -c PolyCalculator.c
PolyFunctions.o: PolyFunctions.c PolyFunctions.h
gcc -Wall -ggdb -c PolyFunctions.c
clean:
rm PolyCalculator *.o *~ *#
然后你用括号和一个美元符号
gcc ${options}
您还可以将其分解:
debug=-ggdb
warnings=-Wall
options=${warnings} ${debug}
还可以将所有对象文件合并到一个变量中:
options=-Wall -ggdb
obj_files=PolyCalculator.o PolyFunctions.o
PolyCalculator: ${obj_files} PolyCalculatorMain.c
gcc -Wall -ggdb -o PolyCalculator PolyCalculatorMain.c ${obj_files}
PolyCalculator.o: PolyCalculator.c PolyCalculator.h
gcc -Wall -ggdb -c PolyCalculator.c
PolyFunctions.o: PolyFunctions.c PolyFunctions.h
gcc -Wall -ggdb -c PolyFunctions.c
clean:
rm PolyCalculator *.o *~ *#
在compile命令中,通常不指定.h文件。预处理器(在编译器之前运行)在遇到#include语句时会包含它们。这是我唯一能看到的 .h文件确实作为依赖项显示在Makefiles中,因为对它们的更改可能需要重新编译使用它们的代码 我想说的是,基本规则是在依赖项行中包含任何内容,如果这些内容发生更改,则需要重新编译
PolyCalculator: PolyCalculator.o PolyFunctions.o PolyCalculatorMain.c
gcc -Wall -ggdb -o PolyCalculator PolyCalculatorMain.c PolyCalculator.o PolyFunctions.o
PolyCalculator.o: PolyCalculator.c PolyCalculator.h
gcc -Wall -ggdb -c PolyCalculator.c
PolyFunctions.o: PolyFunctions.c PolyFunctions.h
gcc -Wall -ggdb -c PolyFunctions.c
clean:
rm PolyCalculator *.o *~ *#
Makefiles允许您拥有可重用的变量。例如,您可以使用
变量中的编译器选项:
options=-Wall -ggdb
obj_files=PolyCalculator.o PolyFunctions.o
PolyCalculator: ${obj_files} PolyCalculatorMain.c
gcc -Wall -ggdb -o PolyCalculator PolyCalculatorMain.c ${obj_files}
PolyCalculator.o: PolyCalculator.c PolyCalculator.h
gcc -Wall -ggdb -c PolyCalculator.c
PolyFunctions.o: PolyFunctions.c PolyFunctions.h
gcc -Wall -ggdb -c PolyFunctions.c
clean:
rm PolyCalculator *.o *~ *#
然后你用括号和一个美元符号
gcc ${options}
您还可以将其分解:
debug=-ggdb
warnings=-Wall
options=${warnings} ${debug}
还可以将所有对象文件合并到一个变量中:
options=-Wall -ggdb
obj_files=PolyCalculator.o PolyFunctions.o
PolyCalculator: ${obj_files} PolyCalculatorMain.c
gcc -Wall -ggdb -o PolyCalculator PolyCalculatorMain.c ${obj_files}
PolyCalculator.o: PolyCalculator.c PolyCalculator.h
gcc -Wall -ggdb -c PolyCalculator.c
PolyFunctions.o: PolyFunctions.c PolyFunctions.h
gcc -Wall -ggdb -c PolyFunctions.c
clean:
rm PolyCalculator *.o *~ *#
因为您没有给出您想要更改/修改的内容的明确说明,所以我将如下所示为您编写makefile,尽管有些人可能(将?)不同意我的观点。 我看到你编辑了你原来的帖子,提到了PolyFunctions.cpp(我猜是这样的) 是一个多功能函数 好的,我所做的改变(以及为什么)
INCS
变量)。我还为链接器分解了命令和标志,LK
、LKFLAGS
和LIBS
变量。目前,这些都是空的OBJS
变量中。在我看来,添加新源文件时需要做的事情越多,我忘记某些事情的可能性就越大$(PROG)
比键入PolyCalculator
:)更容易,也不容易出错make
时,我只构建自上次构建以来发生变化的内容。我在顶部附近放置了一条规则,用于对应用程序进行总体重建,在上面的示例中,这是rebuild
规则。运行make rebuild
在操作上等同于make clean;制作
;但我更喜欢一个单一的目标来实现这一点-f
标志添加到rm
中,这样即使找不到文件,clean也可以完成所有操作。同样,这往往是个人偏好因为您没有给出您想要更改/修改的内容的真正明确的保留,所以我将如下所示编写makefile,尽管