zoukankan      html  css  js  c++  java
  • linux下Makefile的简单例子及解释

    对于大一点的项目,Makefile都是不可或缺的,这里记录一个自己弄的简单的例子。

    有3个file: main.cpp main2.cpp main2.h

    main.cpp    --    main函数所在,调用main2.cpp中的一个外部函数test()

    main2.cpp  --    test函数所在

    main2.h     --    test的函数声明

    看一下三个文件:

    //main.cpp
    #include <iostream>
    #include "main2.h"
    using namespace std;
    
    void test();
    
    int main()
    {
        int a = 1;
        test();
    }
    //main2.cpp
    #include <iostream>
    #include "main2.h"
    using namespace std;
    
    void test()
    {
        cout<<"test in main2.cpp"<<endl;
    }
    //main2.h
    #ifndef _MAIN2_H_
    #define _MAIN2_H_
    
    void test();
    
    #endif

    流程是:

    main2.cpp -> main2.o

    main.cpp   -> main.o

    main.o + main2.o  ->  main(可执行文件)

    那么Makefile这样写:

    main: main.o main2.o
        g++ -o main main.o main2.o
    
    main.o: main.cpp main2.h
        g++ -o main.o -c main.cpp
    
    main2.o: main2.cpp main2.h
        g++ -o main2.o -c main2.cpp
    
    clean:
        rm *.o main

    其中g++所在的行,就是执行编译的命令。

    其中带有冒号 : 的行,意思是如果冒号后面有文件更新了,那么就执行下一行g++命令更新冒号前的那个内容。冒号前的内容depend on冒号后的内容。

    clean就是清除中间文件和最终文件。

  • 相关阅读:
    ios开发系列-准备工作
    tests
    腾讯DBA官方博客开通了,欢迎交流
    腾讯DBA官方博客开通了
    [HNOI2008]水平可见直线
    BZOJ-4518 征途
    CDQ分治与整体二分
    HYSBZ-1176 Mokia
    二逼平衡树
    可持久化数组
  • 原文地址:https://www.cnblogs.com/lihaozy/p/2629706.html
Copyright © 2011-2022 走看看