zoukankan      html  css  js  c++  java
  • ###再探Makefile

    使用makefile。以前刚开始接触Makefile的时候,写过一个最简单的Makefile点击查看Evernote原文

    #@author:       gr
    #@date:         2014-07-20
    #@email:        forgerui@gmail.com
    

    一、Contents

    1. $@表示目标文件
    2. $^表示依赖文件
    3. $<表示第一个依赖文件
        main: main.o h1.o h2.o
        gcc -o main main.o h1.o h2.o
        #上面可以简化为如下
        gcc -o $@ $^
        #-------------------------------#
        main.o: main.c h1.h h2.h
        #编译命令可以简写为
        gcc -c $<
    
    1. 缺省规则,这个规则表示所有的 .o文件都是依赖与相应的.cpp件的.例如

       .cpp.o:
       g++ -c $<
      
    
    5. `make clean`: `-rm edit $(objects)`前面的`-`表示如果出错不要管,继续后面的操作.`make clean`不要放在第一个,否则会变成默认项.
    
    6. `pkg-config`问题:
        &nbsp;&nbsp;&nbsp;&nbsp;使用pkg-config可以检索系统中安装*库文件*的信息。-–cflags 参数可以给出在编译时所需要的选项,而 -–libs 参数可以给出连接时的选项。
    
    

    gcc -c pkg-config –-cflags glib-2.0 sample.c

    
    7. 变量的高级用法
     + 第一种是变量值的**替换**。其格式是`$(var:a=b)`或是`${var:a=b}`,其意思是,把变量`var`中所有以“a”字串“结尾”的“a”替换成“b”字串。
    
    ```bash
        foo=main.o h1.o h2.o
        #$(foo)中所有以“.o”字串结尾全部替换成“.c”
        $new=$(foo:.o=.c)
        #$(bar)的值就是“a.c b.c c.c”。
    
    • 第二种是把变量的值再当成变量.
        x = y
        y = z
        a := $($(x))
    

    在这个例子中,$(x)的值是“y”,所以$($(x))就是$(y),于是$(a)的值就是“z”。(注意,是x=y,而不是x=$(y)

    二、最后学习得到的最后结果。


    #file start
    
    CC=g++
    CFLAGS=`pkg-config --cflags opencv`
    LFLAGS=`pkg-config --libs opencv`
    SOURCES=main.cpp stl.cpp non-member.cpp
    OBJECTS=$(SOURCES:.cpp=.o)
    RUN=stlDemo
    
    all: $(RUN)
    
    depend: 
    	$(CC) $(CFLAGS) -MM $(SOURCES) > .deps
    
    clean:
    	-rm -rf $(RUN) $(OBJECTS) 
    
    $(RUN): $(OBJECTS) 
    	$(CC) -o $@ $^ $(LFLAGS)
    .cpp.o:
    	$(CC) -c $< $(CFLAGS)
    
    include .deps
    
    #file end
    
  • 相关阅读:
    牢固你的人际关系三十六计
    Google 将携手大众,开发新一代汽车导航系统
    C++图书热点观察[转]
    Qt程序http报错 TLS initialization failed
    基于kinova jaco2机械臂的仿真模拟
    IfcBuild2Axes
    threejs绘制多边形2
    QAction
    java Math.pow
    yolov5模型地址
  • 原文地址:https://www.cnblogs.com/gr-nick/p/3880377.html
Copyright © 2011-2022 走看看