并且“x.c” 、“y.c”和“z.c”都存在时,隐含规则将执行如下命令。 cc -c x.c -o x.o cc -c y.c -o y.o cc -c z.c -o z.o cc -c x.o y.o z.o -o x 如果没有一个源文件(如上例中的x.c)和你的目标名字(如上例中的x)相关联,那么,你最好写出来自己的生成规则,不然,隐含...
} 当C存在头文件和文件间的引用的时候, 示例代码: test01.h(定义函数名称,后续直接引用该文件名就可以指向对应的实际方法中) #ifndef TEST01_H#defineTEST01_H#include<stdbool.h>#include<unistd.h>voidtest_init();#endif test01.c #include <stdlib.h>#include<stdio.h>#include"test01.h"voidtest_in...
如printf1.c 和 printf1.h 源文件有改动,make 将在重新编译 main 之前自动重新编译 printf1.o。 2.3 假想目标: 前面makefile 中出现的文件称之为假想目标,假想目标并不是一个真正的文件名,通常是一个目标集合或者动作。 可以没有依赖或者命令,一般需要显示的使用 make + 名字 显示调用。 all:exec1 exec2...
#生成 add_int.o的规则,将add_int.c编译成目标文件add_int.oadd_int.o:add/add_int.c add/add.h gcc-c -o add/add_int.o add/add_int.c #生成add_float.oadd_float.o:add/add_float.c add/add.h gcc-c -o add/add_float.o add/add_float.c #生成sub_int.osub_int.o:sub/sub_int....
OBJ=$(patsubst %.c,%.o,$(SRC)) 控制Make的行为 make -B 强制重新编译所有目标; make -n 显示将要执行的命令而不实际执行; make -f指定使用其他名称的Makefile文件; make -j 允许并行执行(多核编译)。 高级用法 - 条件判断 Makefile也支持条件判断,这在不同环境需要执行不同命令时非常有用。
《从0写一个《电话号码管理系统》的C入门项目【适合初学者】》 一、文件 好了,开始吧! 我们将该项目的所有功能函数放到以该函数名命名的c文件,同时放到对应名称的子目录中。 比如函数allfree(),存放到 allfree/allfree.c中 最终目录结构如下图所示: ...
自动生成Makefile文件可看此文 cmake入门 1、Makefile编译过程 Makefile文件中的命令有一定规范,一旦该文件编写好以后在Linux命令行中执行一条make命令即可自动编译整个工程。不同厂家的make可能会稍有不同,并且语法上也有区别,不过基本思想都差不多,主要还是落在目标依赖上,最广泛使用的是GNUmake。
make -C debug ECHO: @echo $(SUBDIRS) #将c文件编译为o文件,并放在指定放置目标文件的目录中即OBJS_DIR $(CUR_OBJS):%.o:%.c $(CC) -c $^ -o $(ROOT_DIR)/$(OBJS_DIR)/$@ clean: @rm $(OBJS_DIR)/*.o @rm -rf $(BIN_DIR)/* ...
c文件的书写格式 在写每个函数之前要加载头文件,如果是.h文件,就需要写#include”a.h”。 例如:引用之前的a.h文件。 add.c #include”a.h” int add(int a,intb) { return a+b; } 保存退出。 程序编辑完成之后,需要编译链接。 我们可以用gcc编译每个.c文件。如果有三个.c文件a.c、b.c、c.c,编...
gcc-c-otest.otest.c 观察上面的makefile #号起始的行是注释行 target: prerequisite为依赖关系,即目标文件(target)依赖于前提文件(prerequisite)。可以有多个前提文件,用空格分开。 依赖关系后面的缩进行是实现依赖关系进行的操作,即正常的UNIX命令。一个依赖关系可以附属有多个操作。