一直知道makefile是为了让工程更合理化编译和输出~

从未在unix下自己写这个;在windows开发中一直用ide开发,ide自带;偶而写写小东西,也是用bat方式直接编译。

ps:bat方式就是自己写编译命令;与makefile的区别是前者无论文件是否发生改变都编译,后者是当编译成功后若文件未发生任何改动,不会编译;较之于前者,后者编译效率高的多。

以前简单学习了makefile,没有动手实践过;今天有兴致简单实践一把。

实际环境:

net cs代码

nmake

编写简单代码:helloworld

1 using System;
2  using System.Collections.Generic;
3  using System.Text;
4
5  namespace ConsoleApplication1
6 {
7 class Program
8 {
9 static void Main(string[] args)
10 {
11 string s = "Hello";
12 s = s + " world";
13
14 Console.WriteLine(s);
15
16 Console.Read();
17 }
18 }
19 }
20  

第一次编写makefile,如下:

1 all:helloworld.exe
2
3 helloworld.exe:helloworld.cs
4 csc helloworld.cs
5
6 clean:
7 -del *.exe

直接用命令:nmake helloworld.makefile

报错:fatal error U1034

想了半天,尝试性的做了如下调整:

1 all:helloworld.exe
2
3 helloworld.exe:helloworld.cs
4 csc helloworld.cs
5
6 clean:
7 -del *.exe

再使用命令,完全编译通过

仔细看看两个makefile,发现第四行和第七行有一个空格的差异。

阅读《How to Write makefile.pdf》其中没有此空格的注明,仅有如下规则:

target...:prerequisites...

command

【总结】:

实际的格式:

target...:prerequisites...

command

此处空格意义:告知nmake"command"是目标的一个命令,而非下一个目标的开始。

另外不知道其他情况下,比如unix下是否有这个问题,也许仅仅只有nmake才有这个错误。有待后续测试结论

【2010-12-28】

继续阅读《How to Write makefile.pdf》,文中有这么一句:

最后,还值得一提的是,在Makefile中的命令,必须要以[Tab]键开始。

此话已说明命令在格式中的特殊起始点。上面所说" "空格不是标准的格式,可用而已

转载于:https://www.cnblogs.com/GoGoagg/archive/2010/12/27/1917998.html

makefile格式-实践一相关推荐

  1. java makefile jar包_java makefile学习实践(编译的javac命令写在makefile中,运行命令java写在shell脚本中)...

    学习makefile教程,ubuntu中文网 1.写一个简单的java项目,不需要外部jar,用的简单的 importjava.util.ArrayList;是可以从CLASSPATH环境变量中找到的 ...

  2. JQuery + XML作为前后台数据交换格式实践

    JQuery + xml作为前后台数据交换 JQuery提供良好的异步加载接口AJAX,可以局部更新页面数据, http://api.jquery.com/category/ajax/ xml作为一种 ...

  3. [微信小程序] 单张、多张图片上传(图片转base64格式)实践经验

    本文首发自个人自有博客:[FaxMiao个人博客],一个关注Web前端开发技术.关注用户体验.记录前端点滴,坚持更多原创,为大家提供高质量技术博文! 定义初始数据: data: {imgList: [ ...

  4. 【转载】跟我一起写 Makefile(一)

    本文转载自:https://blog.csdn.net/haoel/article/details/2886 工欲善其事,必先利其器. 首页 博客 学院 下载 图文课 论坛 APP 问答 商城 活动 ...

  5. 【C++基础】【集成编译环境01】Clion的C++编译环境和Boost Test Framworks框架运行实践

    本文项目源码链接: CLionboostunittestframeworks项目源码-C++文档类资源-CSDN文库 前言和行文思路: VScode.Clion.Pycharm都是集成环境的编辑器,他 ...

  6. [linux]makefile使用

    简介: 使用makefile记录项目各个文件的依赖关系,make程序会根据依赖关系从底层开始执行编译命令,最后生成最终目标文件.使用makefile可以方便编译多个相互依赖的源文件最终生成目标文件. ...

  7. Linux Makefile

    Makefile 格式 一个例子如下.Makefile由一系列规则组成. 规则格式如下:命令列表中的命令,以TAB键开始. 目标-: 依赖文件集合--命令 1命令 2-- 下面规则,目标是main,依 ...

  8. Makefile语法总结

    Makefile语法总结 C语言编译过程 预处理:将.h和.c文件处理为.i文件 编译:将.i文件编译为.s文件(汇编文件) 汇编:将.s文件编译为.o文件(二进制文件) 链接:将.o文件链接为.ou ...

  9. 嵌入式Linux系统编程学习之六make工程管理和Makefile

    文章目录 前言 一.Makefile中特殊处理与伪目标 二.变量.规则与函数 1.变量 2.规则 3.函数 总结 前言   工程管理器指管理较多的文件,它是自动管理器,能根据文件时间自动发现更新过的文 ...

最新文章

  1. Android-SharedPreferences
  2. 创建一个存储函数,返回指定员工的姓名,薪水和年收入
  3. python列表生成多个号码_python按需生成固定数量电话号码并保存为excel(不重复)...
  4. 系统无法在消息文件中为application_iOS 14 Filza 文件消息,M1 能用 win 系统
  5. CentOS 7 下的 Firewall
  6. 4怎么放大字体_win8.1系统如何放大所有字体?
  7. 谈谈遵守公司作战纪律
  8. OD使用教程10 - 调试篇10|解密系列
  9. Oracle之:查询锁表,删除锁表
  10. MySQL数据库左右连接
  11. 微信域名防封接口开发
  12. OpenSSL杂记(CA证书)
  13. 【HTTP图片服务器】【项目记录2】:安装、配置MySQL环境
  14. addClass函数
  15. 编程训练4-统计单词平均长度
  16. 智慧之战——农民工大战博士后
  17. 高效的中文字符串截取函数
  18. 排查服务器异常流量保姆级教程
  19. HTTP状态码code类型
  20. 大一c语言课程设计答辩ppt,c语言课程设计讲解内容图文.ppt

热门文章

  1. hdu-2080(三角函数和向量)
  2. Automatic Exploit Generation:漏洞利用自动化
  3. 用python从0开始创建一个区块链,从代码深入理解区块链
  4. Wasserstein GAN最新进展:从weight clipping到gradient penalty,更加先进的Lipschitz限制手法
  5. 一起学设计模式-策略模式
  6. Socket连接心跳包的机制总结
  7. java搭建maven项目_Eclipse使用maven创建Java Web项目完整示例
  8. Google视角的地理信息科学家
  9. BZOJ 4823 Luogu P3756 [CQOI2017]老C的方块 (网络流、最小割)
  10. BZOJ 3218 UOJ #77 A+B Problem (主席树、最小割)