zoukankan      html  css  js  c++  java
  • 【makefile】03 经典应用示例

    经典应用示例

    1. 文件结构

    .
    ├── include
    │   ├── module1
    │   │   ├── mod1c1.hpp
    │   │   └── mod1c2.hpp
    │   ├── module2
    │   │   ├── mod2c1.hpp
    │   │   └── mod2c2.hpp
    │   └── program.hpp
    ├── Makefile
    └── src
        ├── module1
        │   ├── mod1c1.cpp
        │   └── mod1c2.cpp
        ├── module2
        │   ├── mod2c1.cpp
        │   └── mod2c2.cpp
        └── program.cpp

    makefile文件:

     1 #
     2 # **************************************************************
     3 # *                Simple C++ Makefile Template                *
     4 # *                                                            *
     5 # * Author: Arash Partow (2003)                                *
     6 # * URL: http://www.partow.net/programming/makefile/index.html *
     7 # *                                                            *
     8 # * Copyright notice:                                          *
     9 # * Free use of this C++ Makefile template is permitted under  *
    10 # * the guidelines and in accordance with the the MIT License  *
    11 # * http://www.opensource.org/licenses/MIT                     *
    12 # *                                                            *
    13 # **************************************************************
    14 #
    15 
    16 CXX      := -c++
    17 CXXFLAGS := -pedantic-errors -Wall -Wextra -Werror
    18 LDFLAGS  := -L/usr/lib -lstdc++ -lm
    19 BUILD    := ./build
    20 OBJ_DIR  := $(BUILD)/objects
    21 APP_DIR  := $(BUILD)/apps
    22 TARGET   := program
    23 INCLUDE  := -Iinclude/
    24 SRC      :=                      
    25    $(wildcard src/module1/*.cpp) 
    26    $(wildcard src/module2/*.cpp) 
    27    $(wildcard src/*.cpp)         
    28 
    29 OBJECTS  := $(SRC:%.cpp=$(OBJ_DIR)/%.o)
    30 DEPENDENCIES 
    31          := $(OBJECTS:.o=.d)
    32 
    33 all: build $(APP_DIR)/$(TARGET)
    34 
    35 $(OBJ_DIR)/%.o: %.cpp
    36     @mkdir -p $(@D)
    37     $(CXX) $(CXXFLAGS) $(INCLUDE) -c $< -MMD -o $@
    38 
    39 $(APP_DIR)/$(TARGET): $(OBJECTS)
    40     @mkdir -p $(@D)
    41     $(CXX) $(CXXFLAGS) -o $(APP_DIR)/$(TARGET) $^ $(LDFLAGS)
    42 
    43 -include $(DEPENDENCIES)
    44 
    45 .PHONY: all build clean debug release info
    46 
    47 build:
    48     @mkdir -p $(APP_DIR)
    49     @mkdir -p $(OBJ_DIR)
    50 
    51 debug: CXXFLAGS += -DDEBUG -g
    52 debug: all
    53 
    54 release: CXXFLAGS += -O2
    55 release: all
    56 
    57 clean:
    58     -@rm -rvf $(OBJ_DIR)/*
    59     -@rm -rvf $(APP_DIR)/*
    60 
    61 info:
    62     @echo "[*] Application dir: ${APP_DIR}     "
    63     @echo "[*] Object dir:      ${OBJ_DIR}     "
    64     @echo "[*] Sources:         ${SRC}         "
    65     @echo "[*] Objects:         ${OBJECTS}     "
    66     @echo "[*] Dependencies:    ${DEPENDENCIES}"

    参考资料:

    1. Simple C++ Makefile Example

    2. makefile教程【C语言中文网】

  • 相关阅读:
    Codeforces Round #344 (Div. 2) C. Report 其他
    Codeforces Round #344 (Div. 2) B. Print Check 水题
    Codeforces Round #344 (Div. 2) A. Interview 水题
    8VC Venture Cup 2016
    CDOJ 1280 772002画马尾 每周一题 div1 矩阵快速幂 中二版
    CDOJ 1280 772002画马尾 每周一题 div1 矩阵快速幂
    CDOJ 1279 班委选举 每周一题 div2 暴力
    每周算法讲堂 快速幂
    8VC Venture Cup 2016
    Educational Codeforces Round 9 F. Magic Matrix 最小生成树
  • 原文地址:https://www.cnblogs.com/sunbines/p/15435495.html
Copyright © 2011-2022 走看看