MakeFile 简单的实例

假定有以下的源文件。

  • main.cpp
  • hello.cpp
  • factorial.cpp
  • functions.h

main.cpp 文件的内容

#include <iostream.h>
#include "functions.h"

int main()
{
    print_hello();
    cout << endl;
    cout << "The factorial of 5 is " << factorial(5) << endl;
    return 0;
}

hello.cpp 文件的内容

#include <iostream.h>
#include "functions.h"

void print_hello()
{
   cout << "Hello World!";
}

factorial.cpp 文件的内容

#include "functions.h"

int factorial(int n){
    if(n!=1){
    return(n * factorial(n-1));
    }
    else return 1;
}

functions.h 内容

void print_hello();
int factorial(int n);

琐碎的方法来编译的文件,并获得一个可执行文件,通过运行以下命令:

    CC  main.cpp hello.cpp factorial.cpp -o hello

这上面的命令将生成二进制的Hello。在我们的例子中,我们只有四个文件,我们知道的函数调用序列,因此它可能是可行的,上面写的命令的手,准备最后的二进制。但对于大的项目,我们将有源代码文件成千上万的文件,就很难保持二进制版本。

make命令允许您管理大型程序或程序组。当开始编写较大的程序,你会发现,重新编译较大的程序,需要更长的时间比重新编译的短节目。此外会发现通常只能在一小部分的程序(如单一功能正在调试),其余的程序不变。


makefile 例子这是一个例子编译hello程序Makefile。此程序包含三个文件main.cpp,factorial.cpp,hello.cpp。

 # Define required macros here
 SHELL = /bin/sh
 OBJS =  main.o factorial.o hello.o
 CFLAG = -Wall -g
 CC = gcc
 INCLUDE =
 LIBS = -lm

 hello:${OBJ}
     ${CC} ${CFLAGS} ${INCLUDES} -o $@ ${OBJS} ${LIBS}

 clean:
     -rm -f *.o core *.core

 .cpp.o:
     ${CC} ${CFLAGS} ${INCLUDES} -c $<

现在可以建立hello 程序使用“make”打招呼。如果发出命令“make clean”,则它会删除所有的对象可在当前目录中的文件和核心文件。

取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

Powered by bytekits.com,汇天下文字,成非凡梦想!!!