首页 > 代码库 > Makefile 同时生成两个可执行程序
Makefile 同时生成两个可执行程序
最近正在写一些zmq的C++程序。经常需要写类似于g++ XX.cpp -o XX -lzmq,写的次数多了 觉得太麻烦,于是写了个Makefile文件,先上代码
1 CFILE = $(wildcard ./*.c) 2 CPP_FILE = $(wildcard ./*.cpp) 3 4 OBJ_DIR = ./obj 5 6 O_C = $(patsubst ./%.c, $(OBJ_DIR)/%.o, $(CFILE)) 7 O_CPP = $(patsubst ./%.cpp, $(OBJ_DIR)/%.o, $(CPP_FILE)) 8 O_SRC = http://www.mamicode.com/$(O_C) $(O_CPP)> 9 10 SERVER_SRC = http://www.mamicode.com/server.cpp>11 CLIENT_SRC = http://www.mamicode.com/client.cpp>12 13 TARGET_DIR = .14 TARGET_CLIENT = $(TARGET_DIR)/Client15 TARGET_SERVER = $(TARGET_DIR)/Server16 17 TARGETS = $(TARGET_CLIENT) $(TARGET_SERVER)18 19 CC = cc20 GCC = gcc21 GXX = g++22 23 CPP_FLAGS = -g -Wall24 LIB_NAME = -lzmq25 26 FLAGS = $(LIB_NAME)27 28 all : $(TARGETS)29 30 $(TARGET_CLIENT) : $(O_SRC)31 @if [ ! -e $(TARGET_DIR) ]; then 32 mkdir -p $(TARGET_DIR); 33 fi34 $(GXX) -o $@ $(CLIENT_SRC) $(FLAGS) 35 36 $(TARGET_SERVER) : $(O_SRC)37 @if [ ! -e $(TARGET_DIR) ]; then 38 mkdir -p $(TARGET_DIR); 39 fi40 $(GXX) -o $@ $(SERVER_SRC) $(FLAGS) 41 42 $(OBJ_DIR)/%.o : %.cpp43 @if [ ! -e $(OBJ_DIR) ]; then 44 mkdir -p $(OBJ_DIR); 45 fi46 $(GXX) $(CPP_FLAGS) $(FLAGS) -c $< -o $@
挺麻烦的,还是弄了一个多小时,主要参考了几个东西,wilcard,patsubst,$@,$< 这几个符号弄明白了就差不离了。
从第28行开始
all : $(TARGETS)
代表了我这个程序的所有输出就是TARGETS变量,而这个变量包含两个,一个是Client,一个是Server。 没错!就是因为写通讯一个客户端一个服务器端,一次生成两个可执行程序爽歪歪。
引用了一些参考资料,附链接如下:
Makefile中的wildcard用法
http://blog.csdn.net/liangkaiming/article/details/6267357
makefile 中 $@ $^ %< 使用
http://blog.csdn.net/kesaihao862/article/details/7332528
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。