Makefile书写与阅读

6 篇文章 0 订阅
1 篇文章 0 订阅

前言
这一段时间抽空看了下Makefile的一些基本的写法,以下是我的个人见解

	Makefile Linux或者类Linux操作系统下进行代码管理的一种常用的工具,为我们代码的编译和管理带来了巨大的便利,
	但是学起来并不是那么容易

以下通过一个简单的例子进行分析:这是个简单的排序程序

		example.cpp
				 1 
				  2 #include <stdio.h>
				  3 #include <stdlib.h>
				  4 #include "lib.h"
				  5 
				  6 int main()
				  7 {
				  8 int i=0, num=0,  *array=NULL;
				  9 while(num <= 0){
				 10 printf("\nPlease enter the number of elements:\n");
				 11 scanf("%d",&num);
				 12 if(num > 0)
				 13 break;
				 14 }
				 15 
				 16 if(NULL == (array = (int *)malloc(num*sizeof(int)))) {
				 17 printf("malloc failed!\n");
				 18 exit(-1);
				 19 }
				 20 
				 21 printf("Please enter the elements(total %d):\n", num);
				 22 
				 23 for(i = 0; i<num; i++){
				 24 printf("\nNo.%d:\t", i);
				 25 scanf("%d", array+i);
				 26 }
				 27 sort(array, num);				//调用lib.c  
				 28 printf("=========================\nthe result is:\n");
				 29 for(i = 0; i<num; i++) {
				 30 printf("%d:\t%d\n", i, *(array+i));
				 31 }
				 32 free(array);
				 33 return 0;
				 34 }    

		lib.cpp
				  1 #include<stdio.h>
				  2 
				  3 
				  4 int sort(int s[],int r)
				  5 {
				  6 int i=0,j=0,temp=0;
				  7 for(i=0;i<r-1;i++)
				  8 for(j=0;j<r-1;j++)
				  9 {
				 10 if(s[j]<s[j+1]){
				 11 temp=s[j];
				 12 s[j]=s[j+1];
				 13 s[j+1]=temp;}
				 14 printf("f00ffff");
				 15 }
				 16 
				 17 return 0;
				 18 }
				
				
			lib.h
				
				int sort(int s[],int r);
				
			Makefile
					  1 CC = gcc
					  2 
					  3 
					  4 EXEC = example
					  5 OBJS = example.o lib.o
					  6 
					  7 all: $(EXEC)
					  8 $(EXEC): $(OBJS)
					  9         $(CC) $(EXEC) -o $(OBJS) 
					 10 example.o: example.cpp
					 11         $(CC) example.o -o example.c
					 12 lib.o: lib.cpp
					 13         $(CC) lib.o -o lib.c
					 14 .PHONY:clean
					 15 clean:  
					 16         rm -i *.o

以上是两个c文件,和一个库文件,及一个Makefile文件,将四个文件放到一个文件夹下,执行make 命令即可编译运行,实现数据的录入和排序。
先说下程序的结构,在example.cpp中我调用了一个排序函数来进行排序,而排序函数被我写在了另一个c文件中。

我们主要来分析下Makefile的主要内容:
前5行主要定义变量和路径的填充;中间的一部分主要是依赖关系的构建的命令的执行(要注意一点,命令前面那些缩进不是空格,而是tab,若打成空格会出现报错),最后一部分是一个清除文件的一个伪目标,可以在编译完成后执行make clean 命令,来清楚文件夹下的一些 .o 文件,使我们Windows下的obj文件,也称为目标文件

以上是我的一些关于Makefile 的基本认知,欢迎大家评论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值