zoukankan      html  css  js  c++  java
  • makefile简单例子

    $@   --目标文件,
    $^    --所有的依赖文件,
    $<    --第一个依赖文件。
    $?   --所有比目标新的依赖目标的集合。以空格分隔。
    -Wl,-rpath --编译目标代码时指定的动态库搜索路径。
    GCC四步曲
    第一步:预处理
    gcc -E hello.c -o hello.i
    第二步:编译
    gcc -S hello.i -o hello.s
    第三步:汇编
    gcc -c hello.s -o hello.o
    第四步:链接
    链接动态库和静态库
    Makefile 简单例子:
    
    #定义生成的目标文件
    CPP = g++
    FLAG += -g -Wall -std=c++11
    
    LIB_PATH+=-L/usr/local/lib 
    LIB_PATH+=-L/usr/local/lib/boost
    
    EXTRA_LIBS=-lpthread -lboost_system
    
    #定义目标文件
    SRC=./src
    
    SOURCE := $(wildcard $(SRC)/*.cpp) $(wildcard $(SRC)/common/*.cpp)
    OBJS := $(patsubst %.cpp,%.o,$(SOURCE))
    
    EXEC=CMS
    
    all:    $(EXEC)
    $(EXEC):$(OBJS)
      $(CPP) $(FLAG) -o $(EXEC) $(OBJS) $(EXTRA_LIBS) $(LIB_PATH)
    
    ######各文件的依赖关系
    .cpp.o:
      $(CPP) $(FLAG) -c -o $@ $<
    
    ######定义依赖关系结束
    clean:
      rm -f ${SRC}/*.o
    
    #g++ -g -Wall -std=c++11 main.cpp epoll_server.cpp -c 
    #g++ main.o epoll_server.o -o -L/usr/local/lib -L/usr/local/lib/boost -lpthread -lboost_system





  • 相关阅读:
    c++单例设计模式---17
    c++友元函數---16
    c++const关键字---15
    c++浅拷贝和深拷贝---14
    linux shell 基本语法
    Linux静态库生成
    alsa wav
    Android Butterknife使用方法总结 IOC框架
    利用cglib给javabean动态添加属性,不用在建VO
    钢铁雄心三 通过事件做修改器
  • 原文地址:https://www.cnblogs.com/osbreak/p/13929365.html
Copyright © 2011-2022 走看看