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语言中文网】

  • 相关阅读:
    pandas Dataframe filter
    process xlsx with pandas
    data manipulate in excel with easyExcel class
    modify registry in user environment
    add number line in vim
    java import webservice
    ctypes MessageBoxA
    music 163 lyrics
    【python实例】自动贩卖机
    【python基础】sys模块(库)方法汇总
  • 原文地址:https://www.cnblogs.com/sunbines/p/15435495.html
Copyright © 2011-2022 走看看