| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3358 人关注过本帖
标题:mingw 多文件编译
只看楼主 加入收藏
charderkk
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2010-8-24
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:13 
mingw 多文件编译
windows下装了mingw,平时编译文件就是在cmd中用g++ -o test test.cpp,现遇到两个问题
1  多文件时编译时 是不是只要g++ -o test 1.cpp 2.cpp 3.cpp 等等,而不需要管后面那些源文件的依赖关系?


2 想问一下如何使用mingw的make命令?
自己在cmd中输入make,就提示'make' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
最好能有个简单的例子,谢谢各位了
搜索更多相关主题的帖子: windows 源文件 test 
2011-01-28 00:25
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
1. 听不懂

2. mingw32-make.exe 在mingw安装目录的bin子目录下
2011-01-28 08:24
charderkk
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2010-8-24
收藏
得分:0 
回复 2楼 rjsp
不好意思  没表述清楚
1  一般多文件编译, 以网上的8个.cpp源文件和3个.h头文件为例 。可以写makefile 来表述各文件的依赖关系,如果不写makefile,想要生成可执行文件test.exe 的话,是不是只要在cmd中键入命令 g++ -o test.exe 1.cpp 2.cpp....   8.cpp  就行了

2 谢了 还有问题是不是  写的makefile 和 源文件头文件 要和 mingw32-make.exe 在一个目录下
2011-01-28 10:02
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:5 
1. 是
makefile中标明了依赖关系,即nmake时没改变的就可以不用重新编译,从而节约时间。

2. 当然不必这样了,你可以将nmake.exe所在的路径加到系统path中去
2011-01-28 10:40
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
如果只有少数几个源文件的话,就可以用你的那个命令编译一下。不过如果多了,比如你说的8个,我觉得还是用 make 好一点。

mingw 的问题以前论坛就有人问过。不过我也没用过,不是很清楚。那个 path 的问题,难道装好之后连根目录下的 bin 都没添加进去吗?反正在 windows 下弄这些东西感觉挺麻烦的。
2011-01-28 22:24
charderkk
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2010-8-24
收藏
得分:0 
回复 楼主 charderkk
在e:cpp\下写了makefile:其中 4.6.cpp grade.cpp median.cpp read_hw.cpp 均在此目录下
4.6:4.6.o grade.o median.o read_hw.o
    gcc -o 4.6 grade.o median.o read_hw.o
4.6.o:  4.6.cpp grade.h read_hw.h
    gcc -c 4.6.cpp
grade.o:grade.cpp grade.h median.h Student_info.h
    gcc -c grade.cpp
median.o:median.cpp median.h
    gcc -c median.cpp

但是用make时出现以下提示:
E:\cpp>make
make: makefile: Permission denied
make: *** No targets.  Stop.
将.O换成.obj也一样不行,不知是什么原因?(注: 用g++ -o 4.6 4.6.cpp median.cpp grade.cpp read_hw.cpp 可以通过且运行正常)

[ 本帖最后由 charderkk 于 2011-1-29 14:30 编辑 ]
2011-01-29 14:25
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
make: makefile: Permission denied这个是说 make 权限不足,打不开 makefile。这个问题挺诡异呀。你的 makefile 可读吧应该?
2011-01-29 16:11
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:5 
Makefile 有模式匹配。比如可以写
%.o: %.cpp
        g++ -c -o $@ $<

之后所有的 .o 目标都会套用这个规则,像你的那三个就可以不用写了。
当然如果有的有特殊需要,自己写的具体的 ***.o 规则会覆盖这个模式。
2011-01-29 16:18
charderkk
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2010-8-24
收藏
得分:0 
回复 7楼 pangding
谢谢pangding,看了下属性 没有只读啊,从网上搜了一些资料,也没有很好解决...
2011-01-29 20:58
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
你写个测试用的小项目,然后来个 Makefile 看看行不行?可能那个错误和你的系统设置有关系,不一定是你的 makefile 不行。
2011-01-29 22:37
快速回复:mingw 多文件编译
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016171 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved