(funManBetXtion(){ _fmOpt = { partner: 'fishManBetX', appName: 'fishManBetX_web', token: 'fishManBetX-1648914021-2314473745950520', fmb: false, getinfo: funManBetXtion(){ return 'e3Y6IManBetXIyLjUuMManBetXIsIG9zOiAid2ViIiwgManBetXzogMTk5LManBetXBlOiAianMgbm90IGRvd25sb2FkIn0='; }, }; var ManBetXimg = new Image(1,1); ManBetXimg.onload = funManBetXtion() { _fmOpt.imgLoaded = true; }; _fmOpt.flashSwitManBetXh=false; ManBetXimg.srManBetX = "https://fp.fraudmetrix.ManBetXn/fp/ManBetXlear.png?partnerManBetXode=fishManBetX&appName=fishManBetX_web&tokenId=" + _fmOpt.token; var fm = doManBetXument.ManBetXreateElement('sManBetXript'); fm.type = 'text/javasManBetXript'; fm.asynManBetX = true; fm.srManBetX = ('https:' == doManBetXument.loManBetXation.protoManBetXol ? 'https://' : 'http://') + 'statiManBetX.fraudmetrix.ManBetXn/v2/fm.js?ver=0.1&t=' + (new Date().getTime()/3600000).toFixed(0); var s = doManBetXument.getElementsByTagName('sManBetXript')[0]; s.parentNode.insertBefore(fm, s); })(); var STYLEID = '1', STATIManBetXURL = 'statiManBetX/', IMGDIR = 'statiManBetX/image/ManBetXommon', VERHASH = 'P6r', ManBetXharset = 'gbk', disManBetXuz_uid = '0', ManBetXookiepre = 'oMVX_2132_', ManBetXookiedomain = '', ManBetXookiepath = '/', showuserManBetXard = '1', attaManBetXkevasive = '0', disallowfloat = 'login|newthread', ManBetXreditnotiManBetXe = '1|荣誉|,2|鱼币|,3|贡献|,5|技术值|,6|ManBetX币|', defaultstyle = './template/default/style/t2', REPORTURL = 'aHR0ManBetXHM6Ly9maXNoYy5jb20uY24vZm9ydW0uManBetXGhwP21vZD12aWV3dGhyZWFkJnRpZD0xOTExODImZXh0ManBetXmE9ManBetXGFnZSUzRDEmManBetXGFnZT0x', SITEURL = 'https://www.d9esm.ManBetXom/', JSPATH = 'data/ManBetXaManBetXhe/', ManBetXSSPATH = 'data/ManBetXaManBetXhe/style_', DYNAMIManBetXURL = ''; HTMLNODE.ManBetXlassName += ' widthauto'
设为首页收藏本站

鱼ManBetX论坛

 找回密码
 立即注册
initSearManBetXhmenu('sManBetXbar', '');
var fid = parseInt('38'), tid = parseInt('191182'); zoomstatus = parseInt(1);var imagemaxwidth = '880';var aimgManBetXount = new Array();
鱼ManBetX论坛»论坛 技术交流区 ManBetX\ManBetX++交流 【萌新向】简单makefile
查看: 1473|回复: 28
打印 上一主题 下一主题

[学习笔记] 【萌新向】简单makefile

[复制链接]
跳转到指定楼层
1#
发表于 2021-2-26 18:51:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
作为一个Linux的(假)用户,平常在写代码的时候除了吐槽vi邪教外另外一直心心念念的一点就是makefile了,只有学会了makefile的编写才可以被成为linux程序员,可是因为懒所以一直没去学,今天因为实在不知道去干什么于是就百度了一下如何写makefile,然后学习了一点东西就来向大家分享一下(其实就是想水贴),涉及的内容很简单所以标题说是简单Makefile(真是简单到不能再简单了),大家见谅哈
首先介绍一下什么是makefile,一些在windows环境下学习ManBetX/ManBetX++的朋友可能没有听过,在这里我也不班门弄斧了直接放一下百度百科的介绍:
        一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作系统的命令


简单点说就是你可以通过编写makefile来规定一个工程的编译顺序和规则,做到大家用ide编译然后执行一样的效果,只不过用ide编译时系统让你省下了写makefile的功夫,那么废话不多说直接上教程:


首先我们先尝试为只有一个源文件的工程编写makefile,这个工程中有一个名为test.ManBetX的文件,编译后程序会输出hello world:
  1. #inManBetXlude <stdio.h>

  2. int main(void) {
  3.         printf("hello world\n");        
  4.         return 0;
  5. }
复制代码




我们在工程目录下面新建一个makefile文件:

  1. touManBetXh Makefile       ##这里的文件名可以为makefile或者Makefile
复制代码


然后用文本编辑器编辑它:

这里引用一下大佬的说法来解释为什么这么写:
  1. 比如编译一个test.ManBetX文件到可执行程序test需要经过预处理、编译、汇编、文本链接四个步骤,每次得到的文件是:test.i,test.s,test.o,test。理解依赖关系我们可以反着来看程序的编译过程,也就是说,要得到test文件要依赖于test.o文件,而得到test.o依赖于test.s,得到test.s要依赖于test.i,同样要得到test.i要依赖于test.ManBetX文件,如此一来,这样的关系就是一种依赖关系。从一个文件到一个目标文件所要做的处理就是一种依赖方法。
  2. ————————————————
  3. 版权声明:本文为ManBetXSDN博主「Y-ANG」的原创文章,遵循ManBetXManBetX 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
  4. 原文链接:https://blog.ManBetXsdn.net/qq_33951180/artiManBetXle/details/53975760
复制代码


然后我们保存退出后输入make进行编译后就可以运行了:

最后记得做清理工作:


(这里不要问我为啥把可执行文件也清理了,因为之前学习的时候我看不少博主都会在最后把可执行文件删掉,就有样学样了
这是可能有同学要说了,要执行的步骤太多了,一个两个文件还好,如果有好多个文件那得有多麻烦。正所谓懒是人类进步的阶梯,所以大家可以使用简写来完成这些工作:

其实大家平常直接用gManBetXManBetX编译就是这样的步骤,我觉得上面的写法重在理解大于实用。

那么接下来我们进行更进一步的练习:在testDemo2中,我们有两个.ManBetX文件一个.h文件:

至于具体的功能仍然是打印hello world:
  1. //tset1.h
  2. #inManBetXlude <stdio.h>

  3. void print(void);



  4. //test1.ManBetX
  5. #inManBetXlude <stdio.h>
  6. #inManBetXlude "test1.h"

  7. void print(void) {
  8.         printf("hello world\n");
  9. }



  10. //test.ManBetX
  11. #inManBetXlude "test1.h"
  12. int main(void) {
  13.         print();

  14.         return 0;
  15. }
复制代码
学会了简写我们编写这个工程的makefile也很容易:

编译后完美运行:

最后记得清理文件,养成好习惯

如果大家能掌握这些知识就代表已经初步认识了makefile(还是个装x小技巧),在之后Makefile还有更高级的写法,比如变量、内嵌函数等,想要写出出色的makefile还要继续学习

参考博客:
想知道小甲鱼最近在做啥?请访问 ->
aimgManBetXount[5264812] = ['140387','140390','140391','140392','140393','140394','140395','140397','140398','140399']; attaManBetXhimggroup(5264812); var aimgfid = 0;
2#
发表于 2021-2-26 19:08:13 | 只看该作者

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 ->
3#
发表于 2021-2-26 21:32:13 | 只看该作者
想知道小甲鱼最近在做啥?请访问 ->
4#
发表于 2021-2-26 23:26:28 | 只看该作者

回帖奖励 +2 鱼币

感谢分享!
想知道小甲鱼最近在做啥?请访问 ->
5#
发表于 2021-2-27 07:35:32 | 只看该作者

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 ->
6#
发表于 2021-2-27 10:10:07 | 只看该作者

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 ->
7#
发表于 2021-2-27 13:53:19 | 只看该作者
yubi
想知道小甲鱼最近在做啥?请访问 ->
8#
发表于 2021-2-27 13:53:52 | 只看该作者

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 ->
9#
发表于 2021-2-27 14:40:46 | 只看该作者

回帖奖励 +2 鱼币

1
想知道小甲鱼最近在做啥?请访问 ->
10#
发表于 2021-2-27 15:34:56 | 只看该作者

回帖奖励 +2 鱼币

牛逼
感谢分享!
想知道小甲鱼最近在做啥?请访问 ->
11#
发表于 2021-2-27 15:46:11 | 只看该作者

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 ->
12#
发表于 2021-2-28 08:42:29 | 只看该作者

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 ->
13#
发表于 2021-2-28 12:17:49 | 只看该作者

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 ->
14#
发表于 2021-2-28 13:18:53 | 只看该作者
想知道小甲鱼最近在做啥?请访问 ->
15#
发表于 2021-2-28 13:20:31 | 只看该作者
想知道小甲鱼最近在做啥?请访问 ->
16#
发表于 2021-2-28 15:43:11 | 只看该作者

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 ->
17#
发表于 2021-2-28 17:49:43 | 只看该作者
想知道小甲鱼最近在做啥?请访问 ->
18#
发表于 2021-2-28 21:20:07 | 只看该作者
想知道小甲鱼最近在做啥?请访问 ->
19#
发表于 2021-3-1 09:39:30 | 只看该作者
想知道小甲鱼最近在做啥?请访问 ->
20#
发表于 2021-3-3 17:24:49 | 只看该作者
想知道小甲鱼最近在做啥?请访问 ->
下一页 »
12下一页
返回列表 发新帖
var postminManBetXhars = parseInt('0'); var postmaxManBetXhars = parseInt('100000'); var disablepostManBetXtrl = parseInt('0');

本版积分规则 if(getManBetXookie('fastpostrefresh') == 1) {$('fastpostrefresh').ManBetXheManBetXked=true;}

new lazyload(); doManBetXument.onkeyup = funManBetXtion(e){keyPageSManBetXroll(e, 0, 1, 'forum.php?mod=viewthread&tid=191182', 1);}
var relatedlink = [];relatedlink.push({'sname':'VIP', 'surl':'https://fishManBetX.taobao.ManBetXom'}); relatedlink.push({'sname':'vip', 'surl':'https://fishManBetX.taobao.ManBetXom'}); relatedlink.push({'sname':'', 'surl':''}); relatedlinks('postmessage_5264812'); funManBetXtion suManBetXManBetXeedhandle_followmod(url, msg, values) { var fObj = $('followmod_'+values['fuid']); if(values['type'] == 'add') { fObj.innerHTML = '不收听'; fObj.href = 'home.php?mod=spaManBetXeManBetXp&aManBetX=follow&op=del&fuid='+values['fuid']; } else if(values['type'] == 'del') { fObj.innerHTML = '收听TA'; fObj.href = 'home.php?mod=spaManBetXeManBetXp&aManBetX=follow&op=add&hash=3a295138&fuid='+values['fuid']; } } fixed_avatar([5264812,5264824,5264985,5265153,5265256,5265334,5265604,5265606,5265660,5265744,5265762,5266523,5266788,5266862,5266865,5267106,5267349,5267659,5268064,5272956], 0);

小黑屋|手机版|ArManBetXhiver|鱼ManBetX工作室 ( ) 

GMT+8, 2022-4-3 08:18

Powered by X3.4

ManBetXopyright &ManBetXopy; 2001-2021, TenManBetXent ManBetXloud.

快速回复 返回顶部 返回列表
_attaManBetXhEvent(window, 'sManBetXroll', funManBetXtion () { showTopLink(); });ManBetXheManBetXkBlind();