makefile 多行注释_makefile 如何注释_makefile注释(2)

电脑杂谈  发布时间:2017-04-11 05:09:03  来源:网络整理

具体讲解:

#this is annotation
CCFILES += $(wildcardsrc/*.cpp)

利用wildcard函数获取src目录下所有.cpp文件,并赋值给自定义变量CCFILES。其中#号是makefile的注释符号,同shell。

SRCDIR:= ./src/

自定义变量SRCDIR用于指明.cpp源文件所在目录。SRCDIR变量在command中出现时,以类似于宏替换的方式将其载入command中。

VPATH= src:./include:./src/xmlparser:./lib

指明makefile寻找依赖项时,若当前目录不存在,则去VPATH指明的目录去寻找。各目录以“:”号隔开。

CC := icpc

自定义变量CC指明为编译器为icpc,表示使用Intelc++ Compiler作为项目的编译器。

FLAGS := -openmp -openmp-report-vec-report -O2

指明编译选项。

OECT :=file_intece.otinyxml2.o mic_decomposer.o Charset.o network.o buffer.o \
task_queue.o common.o main.o mic_function.o hashtree.onodeconfig.o md5_mic.o ntlm_mic.o

指明目标文件;其中反斜杠\表示一行还未结束。

ALG.out : $(OECT)
    $(CC) $(FLAGS) -o ALG.out $(OECT) ./lib/libxmlextern.a

此处表示makefile需要生成的第一个目标文件,也就是不指明目标文件的make命令默认生成的目标文件。加入icpc的编译选项后,根据ALG.out依赖的目标文件和静态链接库项./lib/libxmlextern.a,进行连接生成可执行文件ALG.out。

file_intece.o :global.htinyxml2.h file_intece.h $(SRCDIR)file_intece.cpp
    $(CC) $(FLAGS) -c$(SRCDIR)file_intece.cpp

指明file_intece.o的依赖项并编译成二进制文件file_intece.o。后面的每个目标文件皆是如此做法。

.PHONY clean
clean:
    rm -f *.o *.out

使用.PHONY关键字,指明clean是伪目标,仅作标签使用。此处不依赖与任何项,使用方法是显示调用make clean,用于执行rm操作。但也可以添加依赖项,如:

all : prog1 prog2 prog3
.PHONY : all

则all依赖于prog1 prog2 prog3这三个文件,那么使用 makeall则可以生成三个目标文件prog1、prog2和prog3。若将all放在所有目标文件的前面,则使用make即可,无需指明make all,原因是make命令将makefile中第一个出现的目标作为最终目标,若不放在最前面,则必须指明make all。

= 是最基本的赋值,以makefile中最后赋值为准;

:= 是覆盖之前的值,以当前赋值为准;

?= 是如果没有被赋值过就赋予等号后面的值;

+= 是添加等号后面的值,即拼接等号后面的值。

其中=和:=的区别见如下代码:

(1)“=”

make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个makefile中最后被指定的值。看例子:


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-40643-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...