简单的makefile编写

    xiaoxiao2021-12-01  18

    CC ?= gcc CFLAGS = -Wall -I/home/coc/target/sysroots/corei7-64-poky-linux/usr/include/libxml2 LDFLAGS = -L/home/coc/target/sysroots/corei7-64-poky-linux/usr/libs LIBS = -lxml2 object = cJSON.o xmltojson.o xmltojson : $(object) ${CC} -o xmltojson $(object) -lm `pkg-config --cflags --libs libxml-2.0` cJSON.o: cJSON.c ${CC} -c cJSON.c xmltojson.o: xmltojson.c ${CC} -c xmltojson.c `pkg-config --cflags --libs libxml-2.0` clean: rm xmltojson $(object) 我有一个需要,想要写一个xmltojson转化的程序,于是想要写一个makefile来试验一下,参照《跟我一起写makefile》, 结构并不复杂,有两个C文件,两个头文件,以及一个供程序启动时的动态库,首先指定编译器,cc ?=gcc 假如不存在的话 则使用gcc 编译器,否则使用系统默认编译器.CFLAGS 是用来说明动态库的头文件路径,LDFLAGS是指动态库的库文件路径, LIBS则是指链接时具体的库. 我用object来指定中间文件,通过中间文件来生成具体的可执行文件,xmltojson 是具体的可执行文件的名字,假如$(object)的 日期比xmltojson的新,那么就会执行后面所执行的命令来生成xmltojson文件。如果xmltojson所依赖的.o中间文件并不存在,那么 就会执行后面所进行的操作。 但是我并没有使用CFLAGS 和 LDFLAGS,而是通过 pkg-config -cflags --lib libxml-2.0来查找具体的库和头文件路径,并加以 链接。但是都是一样,有兴趣可以试一下。

    最后,定义clean规则来删除可执行文件和中间文件。

    类似于clean规则一样,我们还可以添加类似

    install:

               之类的命令来个性化定制我们的makefile

    假如想要生成两个可执行文件,那么需要前面设置all: exe1 exe2

    转载请注明原文地址: https://ju.6miu.com/read-679518.html

    最新回复(0)