zoukankan      html  css  js  c++  java
  • Linux中makefile的极为简单的应用

    makefile的简单用法

    对于makefile的详细描述,其实网上已经有很多了,但是一看每个都是那么复杂,顿时有点望而生畏,所以这里就真的仅仅是简单的介绍一下makefile的使用,十分钟即可了解如何编译简单的cpp文件。

    makefile的格式:

    target:dependency_files ##生成target所需要的所有dependency_files     
    	command #注意是一个TAB
    

    例子:

    hello.o:hello.c hello.h     
    	gcc -c hello.c -o hello.o
    

    在没有编写makefile之前可以使用命令gcc *.c -Wall查看当前代码是否有语法错误

    head.h:

    void print1(); 
    void print2();
    

    f1.c:

    #include <stdio.h>  
    void print1(){     
    	printf("Message:f1
    "); 
    }
    

    f2.c:

    #include <stdio.h>  
    void print2(){     
    	printf("Message:f2
    "); 
    }
    

    main.c:

    #include <stdio.h> 
    #include "head.h"//调用自己写的头文件用引号  
    int main() {         
    	print1();         
    	print2();          
    	printf("end main
    ");         
    	return 0; 
    }
    

    新建makefile文件并输入以下内容

    test:f1.o f2.o main.o     
    	gcc f1.o f2.o main.o -o test 
    f2.o:f2.c     
    	gcc -c -Wall f2.c -o f2.o# -Wall允许发出gcc所有有用的报警信息 
    f1.o:f1.c     
    	gcc -c -Wall f1.c -o f1.o#-c表示只编译不链接,生成目标文件“.o” 
    main.o:main.c
    	gcc -c -Wall main.c -o main.o#-o file表示把输出文件输入到file里 
    clean:  rm *.o test#删除.o和执行文件
    

    执行makefile文件:

    $ make 默认生一个文件 
    $ make '目标名' #选择性的编译,比如make f1.o就只编译那一部分
    

    当工程中的文件名和makefile中的目标重名时,就会有伪目标. 执行make命令时会发现提示目标文件已经是最新将不被执行! 因为make命令只编译改动的代码文件,而不用完全编译. 如果想让makefile中某个命令永远被执行可以在目标名前加上.PHONY:'目标名'

    小插曲:

    解决centos共享文件夹消失问题:(要在root视角下)

    1. 一般情况下共享文件夹在/mnt/hgfs文件夹下
    2. 首先前往Linux的/mnt/hgfs文件下(若没有就创建一个)
      cd /mnt/hgfs
    3. 查看是否共享成功
      vmware-hgfsclient
    4. 安装open-vm-tools并挂载(确保在此之前安装了VMtools)
      yum install open-vm-tools vmhgfs-fuse .host:/ /mnt/hgfs
    5. over

    QT登场

    但是呢,大型工程我不用makefile了,因为之前我已经下好了QT并且配置好了环境。啧啧,果然,QT就是好用。
    接下来借鉴 的文章来介绍一下QT的安装吧!

    如何使用QT呢?
    首先打开需要运行的工程的目录,只有.cpp和.h文件,如图所示:

    然后运行Terminal,输入

    qmake -project
    

    此时可以查看一下目录,它多了什么。

    然后再输入
    qmake
    可再查看一次目录
    然后输入
    make
    此时查看目录就会发现,诶?出现了一个没有后缀的文件。直接./文件名就能直接运行。

    这个test.cpp为输出当前系统时间:

    #include <iostream> 
    #include "test.h" 
    #include <ctime> 
    #include <string>  
    
    using namespace std;  
    int main(){  
    	time_t timep; 
    	time(&timep); 
    	char tmp[64]; 
    	strftime(tmp,sizeof(tmp),"%Y-%m-%d %H:%M:%S",localtime(&timep)); 
    	string time=tmp; 
    	cout<<time; 
    	return 0;  
    }
    

    执行结果为:

    另外,在文章里插个图片怎么这么费劲呢!有道云笔记也不能直接进行分享。反人类的功能设计!!!再见,浪费时间。

  • 相关阅读:
    JQuery学习四(过滤选择器)
    JQuery学习三(隐式迭代和节点遍历)
    JQuery学习二(获取元素控件并控制)
    JQuery学习一
    Dom中select练习
    DOM动态操纵控件案例
    DOM学习控件定位和案例
    DOM案例五星评分控件
    DOM动态增加控件
    DOM用TagName操作标签
  • 原文地址:https://www.cnblogs.com/ting65536/p/13583285.html
Copyright © 2011-2022 走看看