当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 自己编译的适用于Win下VC的GNU Make
帖子发表于 : 2012-01-28 20:18 

注册: 2011-06-27 0:57
帖子: 190
送出感谢: 7
接收感谢: 2
Makefile 这东西真是折腾死我了。
开篇先奉劝大家一句,Win下用VC编译器,要嘛创建工程,要嘛MSBuild,
反正别用Makefile,谁用谁蛋疼,我可不是开玩笑,都疼了两天了。

如果非要用Makefile,一般情况下千万别用nmake,这玩意弱爆了,
连个VPATH都不支持,我翻了好久的文档里三层外三层折腾了MSDN,最后还是没找到与VPATH相似的东西。
我就经常想说,nmake,你淫了。

之后一怒之下转战GNU Make,却惊奇地发现:
诶?.obj怎么不认啊?为什么最通用的那条自动依赖隐含规则生成的命令还带个-o啊?为啥DOS命令move用不了啊?!
于是蛋疼的楼主下载了GNU Make 3.82的源代码,修改编译了这个东西。

此Make特性
* for Windows
* 编译自GNU Make 3.82 加上一些小修补,理论上也兼容其他任何原版支持的编译器
* 添加一项隐含规则:.obj文件对应c语言文件
* 新加入的.obj系列的自动依赖隐含规则的编译参数针对于MSVC(去掉了-o)
* DOS命令move可用
* 欢迎使用,欢迎乱改


具体代码改动:
../make-3.82/default.c
代码:
// 行数 48 - 50,自动依赖隐含规则相关
  = ".out .a .ln .o .c .cc .C .cpp .p .f .F .m .r .y .l .ym .yl .s .S \
.mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo \
.w .ch .web .sh .elc .el";

// 修改后,增加了一个.obj
  = ".obj .out .a .ln .o.c .cc .C .cpp .p .f .F .m .r .y .l .ym .yl .s .S \
.mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo \
.w .ch .web .sh .elc .el";

代码:
// 行数211,增加一段代码
    ".c.obj",
    "$(COMPILE.c) $<",
    ".cc.obj",
    "$(COMPILE.cc) $<",
    ".C.obj",
    "$(COMPILE.C) $<",
    ".cpp.obj",
    "$(COMPILE.cpp) $<",


../make-3.82/job.c
代码:
// 行数2379,在数组sh_cmds_dos[]中增加一项:
"move",

跑到make-3.82目录下执行:
代码:
nmake -f NMakefile

完毕。编译器MSVC 15.00.21022.08

另外想问,这种形式给出修改的代码,
我算不算是能够履行了一次GPL协议?


附件:
文件注释: GNU Make 3.82 Modified
make.zip [128.37 KiB]
被下载 95 次


_________________
我的github: https://github.com/fy0
页首
 用户资料  
 
2 楼 
 文章标题 : Re: 自己编译的适用于Win下VC的GNU Make
帖子发表于 : 2012-01-28 22:34 
头像

注册: 2010-04-23 20:40
帖子: 1950
地址: 浙江·杭州
系统: Arch Linux
送出感谢: 2
接收感谢: 31
干嘛不用 mingw,msvc 多不爽
话说 Win 下用 cmake 蛋就不会疼了,cmake 可以生成 vcproj(是不是这么叫的?)的


_________________
我是 Giumo Clanjor(哆啦比猫/兰威举)
Where there is a hacker, there is art. | Develop for Developers. (C & perl5)
博客 | Clanjor Prods.
类 C 语言到 brainfuck 编译器


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 自己编译的适用于Win下VC的GNU Make
帖子发表于 : 2012-02-02 10:20 
头像

注册: 2007-03-24 23:45
帖子: 2357
送出感谢: 0 次
接收感谢: 9
同楼上
别自己整合 gnu 跟 ms 那套东西,直接上 gnu 全套


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译