• 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 = $(O_C) $(O_CPP)
     9 
    10 SERVER_SRC = server.cpp
    11 CLIENT_SRC = client.cpp
    12 
    13 TARGET_DIR = .
    14 TARGET_CLIENT = $(TARGET_DIR)/Client
    15 TARGET_SERVER = $(TARGET_DIR)/Server
    16 
    17 TARGETS = $(TARGET_CLIENT) $(TARGET_SERVER)
    18 
    19 CC = cc
    20 GCC = gcc
    21 GXX = g++
    22 
    23 CPP_FLAGS = -g -Wall
    24 LIB_NAME = -lzmq
    25 
    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     fi
    34     $(GXX) -o $@ $(CLIENT_SRC) $(FLAGS) 
    35 
    36 $(TARGET_SERVER) : $(O_SRC)
    37     @if [ ! -e $(TARGET_DIR) ]; then 
    38         mkdir -p $(TARGET_DIR); 
    39     fi
    40     $(GXX) -o $@ $(SERVER_SRC) $(FLAGS) 
    41 
    42 $(OBJ_DIR)/%.o : %.cpp
    43     @if [ ! -e $(OBJ_DIR) ]; then 
    44         mkdir -p $(OBJ_DIR); 
    45     fi
    46     $(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

  • 相关阅读:
    java jmap,jstat等工具的使用
    jvm 参数配置
    python NameError: name 'false' is not defined
    aiflow Global variable explicit_defaults_for_timestamp needs to be on (1) for mysql
    TX 笔试题总结
    POJ 3140 Contestants Division
    POJ 1018 Communication System
    POJ 3260 The Fewest Coin
    Leetcode: Median of two sorted Array
    基础知识 (二)
  • 原文地址:https://www.cnblogs.com/kevingeek/p/3791236.html
Copyright © 2020-2023  润新知