前言
每一个今天你绕过去不填的坑,都会在未来等着你。
—哲·士沃硕德
正文
一个C/C++程序从源码到可执行文件都需要经过 预处理-编译-汇编-链接 这几个过程,当然现在只需要gcc x.c
就可以了,而不需要我们去执行具体的cpp
等程序了,非常的方便。
回到今天的case上来,当我们需要编写一个依赖第三方库的程序时,该如何gcc x.c
呢?
以Redis的C客户端hiredis为例,让我们看一下它的Makefile是怎控制编译链接的。
INSTALL?= cp -a
$(PKGCONFNAME): hiredis.h
@echo "Generating $@ for pkgconfig..."
@echo prefix=$(PREFIX) > $@
@echo exec_prefix=\$${prefix} >> $@
@echo libdir=$(PREFIX)/$(LIBRARY_PATH) >> $@
@echo includedir=$(PREFIX)/$(INCLUDE_PATH) >> $@
@echo >> $@
@echo Name: hiredis >> $@
@echo Description: Minimalistic C client library for Redis. >> $@
@echo Version: $(HIREDIS_MAJOR).$(HIREDIS_MINOR).$(HIREDIS_PATCH) >> $@
@echo Libs: -L\$${libdir} -lhiredis >> $@
@echo Cflags: -I\$$