makefile文件如下所示:
CXX = g++
CC = gcc
RM = rm -f
CXXFLAGS += -Wall - D_GNU_SOURCE -g -DLINUX
LIBS =
INCS = -I../../
all:main curltest
main:main.o
$(CXX) -o $@ $< ../tcpwrap.o ../tcp_client.o ../../random/random.o
curltest:curltest.o ../curlwrap.h
$(CXX) -o $@ $< ../../binary/binary_util.o /usr/local/lib/libcurl.a -lz -lrt
%.o:%.cpp
$(CXX) -c $(CXXFLAGS) $(INCS) $< -o $@
clean:
$(RM) $(TARGETS) *.o
对其中有疑惑的地方做个记录和总结
1. $@, $<
$@,表示目标集。$<,表示依赖集。
上例中 $(CXX) -o $@ $< ../tcpwrap.o ../tcp_client.o ../../random/random.o,$@ 表示生成的可执行文件 main,$< 则表示中间文件 main.o
2. -D_GNU_SOURCE
这个参数表示编写的代码,要符合GNU的规范。
关于GNU规范,参考文档 http://blog.csdn.net/romandion/article/details/1675338