使用Makefile进行文件编译的时候,记得除了指定给源文件包含的头文件的路径外,还要将该头文件所需要的.cpp也包含进路径。
-
CROSS =
-
#编译器
-
CC =$(CROSS)g++
-
#当前路径
-
CURIENT_PATH =$(shell pwd)
-
#源文件目录名称
-
SOURCE_DIR =src
-
#头文件目录名称
-
HEAD_DIR =include
-
#源文件目录路径
-
SOURCE_PATH =$(CURIENT_PATH)/$(SOURCE_DIR)/
-
#头文件目录路径
-
HEAD_PATH =$(CURIENT_PATH)/$(HEAD_DIR)/
-
-
SRC =$(wildcard $(SOURCE_PATH)*.cpp)
-
OBJS =$(patsubst %.cpp, %.o, $(SRC))
-
-
#版本号
-
VERSION =_v1.0.0
-
#生成可执行文件+版本号
-
TARGET = Server$(VERSION)
-
#安装路径
-
INSTALL=
-
-
#指定头文件路径,这里文件已经指定,是SOURCE_PATH,所以也就没用到
-
#CFLAGS+=
-
-
#链接库的名称
-
LDFLAGS+=-pthread
-
#pes_parent_dir:=$(shell pwd)/$(lastword $(MAKEFILE_LIST)) 将得到一个完整路径名.
-
#pes_parent_dir:=$(shell dirname $(pes_parent_dir)) 通过命令dirname 去掉 Makefile部分
-
#pes_parent_dir:=$(shell dirname $(pes_parent_dir)) 得到其父目录.
-
-
all:$(TARGET)
-
@#这里的src/command.cpp必须加上,要不然test.cpp只能找到command.h,却无法找到相对应的源程序,无法与command.cpp一起编译
-
$(CC) -g test/test.cpp src/command.cpp -o test/test -I$(HEAD_PATH) $(LDFLAGS)
-
-
$(TARGET):$(OBJS)
-
$(CC) $^ -g -o $@ $(LDFLAGS)
-
$(OBJS):%.o:%.cpp
-
$(CC) -g -c $^ -o $@ -I$(HEAD_PATH) $(CFLAGS) $(LDFLAGS)
-
clean:
-
rm -f $(OBJS) $(TARGET) test/test
阅读(10779) | 评论(0) | 转发(0) |