• 使用makefile编译多个文件(.c , .cpp , .h等)


    有时候我们要一次运行多个文件,这时候我们可以使用Makefile!!!

    ◊make是什么?

       make是一个命令工具,是一个解释makefile中指令的命令工具。它可以简化编译过程里面所下达的指令,当执行 make 时,make 会在当前的目录下搜寻 Makefile (or makefile) 这个文本文件,执行对应的操作。make 会自动的判别原始码是否经过变动了,而自动更新执行档。

    ◊为什么要使用make?

       假设,现在一个项目里面包含了100个程序文件,如果要对这个项目进行编译,那么光是编译指令就有100条。如果要重新进行编译,那么就又得像之前一样重新来一遍。这样重复且繁琐的工作实在是让我们很不爽啊。所以,用make来进行操作,间接调用gcc岂不是很方便?如果我们更动过某些原始码档案,则 make 也可以主动的判断哪一个原始码与相关的目标文件档案有更新过, 并仅更新该档案。这样可以减少重新编译所需要的时间,也会更加方便。

    ◊makefile又是干什么的?

       makefile其实就是一个文档,里面定义了一系列的规则指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,它记录了原始码如何编译的详细信息! makefile一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

      先看一下makefile的规则:

        目标(target):目标文件1 目标文件2

         <Tab>gcc -o 欲建立的执行文件 目标文件1 目标文件2

    先举一个运行多个c语言文件。

    首先下面是一个完整的 c语言文件,实现了统计用户输入的字符串中大小写字母的个数

    #include<unistd.h>
    #include<sys/types.h>
    #include<sys/wait.h>

    void test(){
    char str[50]={0};
    scanf("%s",str);
    int m=0;
    int n=0;
    pid_t p=fork();
    if(p<0){

    printf("fork failed");
    }

    if(p == 0){

    for(int i=0;i<sizeof(str);i++){


    if( str[i]<='Z'&& str[i]>='A'){
    m++;
    }
    }

    printf("大写字母一共有");
    printf("%d",m);
    printf("个");
    }
    if(p>0){

    for(int i=0;i<sizeof(str);i++){
    if(str[i]>='a' && str[i]<='z'){
    n++;
    }
    }
    printf("小写字母一共有");
    printf("%d",n);
    printf("个");
    }
    }
    int main()
    {
    test();
    return 0;
    }

     此时我们可以把该文件拆成三份,一份是.h文件,用来放头文件等信息,另外两个是.c文件,一个用来放main方法,一个放声明的函数,如下三图

     则在终端进行一下操作

     成功运行多个文件

    下面介绍运行cpp文件,大致步骤相同。

    一个 cpp文件写成多份的形式

     

     

    稍微注意的就是gcc 和g++的使用。

  • 相关阅读:
    IDEA中Spring Boot项目MyBaits提示Invalid bound statement (not found)错误
    js 算法 两个数组比较去重,性能优化
    window.open() 打开新标签,之前的sessionStorage还在
    自定义<el-table-column> 数据格式:数组对象,且每条对象中有一个数组对象
    VSCode 代码格式化 快捷键
    echarts的饼图label标签重叠解决办法
    vue打包 element-icons.woff 和element-icons.ttf 字体文件路径错误,导致icon图标显示成小方块的问题。
    vue中的$refs属性几个注意点
    js中的 || 与 && 运算符详解
    package.json与package-lock.json文件是干什么用的?
  • 原文地址:https://www.cnblogs.com/henuliulei/p/9918054.html
Copyright © 2020-2023  润新知