zoukankan      html  css  js  c++  java
  • Makefile 使用

    Makefile文件内容如下图:

    对应文件目录结构如下图:

    详解:

    1)makefile 脚本可以定义变量,例如  上图中的 EXE  SUBDIR  等,均是定义的变量,使用时通过 $(变量名) 即可获取

    2)$(EXE):$(CXX_OBJECTS)     $(EXE)表示目标,即 test;$(CXX_OBJECTS)即生成该目标的依赖

         %.o:%.cpp  %.o表示目标;%.cpp即生成该目标的依赖   %表示通配符 

    3)patsubst foreach wildcard  是makefile预定义的一个函数,通过$来调用

         patsubst:替换通配符

         foreach:遍历

         wildcard: 在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效。这种情况下如果需要通配符有效,就需要使用该函数。

          $(foreach dir, $(SUBDIR), $(wildcard $(dir)/*.cpp)):表示在各Main Other目录 下的所有.cpp全都获取到

          $(patsubst %.cpp, %.o, $(CXX_SOURCES)) :表示把$(CXX_SOURCES) 中所有的.cpp字符串全都替换成.o字符串,说白了就是想获取每个.cpp对应的.o

          $(patsubst %.o, %d, $(CXX_OBJECTS))  :同理再通过.o获取.d ,*.d文件中包含了每个对应.cpp文件include的头文件信息

    4)$<:依赖项的第一个  $^:所有的依赖项   $@:目标

          -g:生成可调试程序 

          -o:输出 

          -Lpath:库目录 L+path

          -llibname :库名 l+库名(linux下库命名格式 libxxxx.so动态库, l后面只需要跟xxx即可)

          -MMD:编译对应文件.cpp成.o文件时,同时生成一个.d文件,包含了.cpp文件的include信息.

          -include:需要依赖的头文件信息

    5)调用make默认执行第一个选项

  • 相关阅读:
    CComboBox(组合框)控件 学习要点
    弹出菜单的实现
    剪贴板(clipboard)功能
    bash1---基本0
    CHAPTER 2 -----Reapresenting and Manipulating Information(1)
    关于Linux磁盘分区与双系统
    CHAPTER 1 ----- a tour of computer sysytems(3)
    CHAPTER 1 ----- a tour of computer sysytems(2)
    CHAPTER 1 ----- a tour of computer sysytems(1)
    [2017.4.14] 随笔一 ------头文件中用宏定义调试语句(引用C语言写爬虫的初学项目)
  • 原文地址:https://www.cnblogs.com/helloc14/p/12206720.html
Copyright © 2011-2022 走看看