免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: net_robber
打印 上一主题 下一主题

【30日更新】Makefile(用于多目录 源代码 编译)-56楼提供最新版本下载 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2007-03-15 22:49 |只看该作者
原帖由 exir 于 2007-3-15 22:47 发表
...
还有就是带空格的文件名和路径用""括起了就行了。
...

记下了,呵呵

论坛徽章:
0
32 [报告]
发表于 2007-03-16 11:40 |只看该作者

回复 1楼 net_robber 的帖子

CODE:
[Copy to clipboard]
不要完全否定中国的教育制度!
它在扼杀一部分天才的同时,减少了更多废物的出现。
至少,每一个人都有学到了一些可用的知识。

yanweihao 说粗话被严重警告+禁言。
--by converse

[ 本帖最后由 converse 于 2007-3-22 23:11 编辑 ]

论坛徽章:
0
33 [报告]
发表于 2007-03-16 15:55 |只看该作者
"多目录 源代码 编译"这个名字似乎和你写的makefile做的不是一件事情吧
在大的项目中源代码肯定是多目录的,通常需要每个目录下写一个makefile,然后在上级目录的makefile中运行下一级目录的make,按照顺序完成每个子目录的编译
这样,只需要一个make,就能完成整个项目的编译,很多开源的项目都是这样的,楼主找个开源的项目代码看看他们的makefile
这是openldap的makefile的一部分,应该能说明点问题:

all-common: FORCE
        @echo "Making all in `$(PWD)`"
        @for i in $(SUBDIRS) $(ALLDIRS); do             \
                echo "  Entering subdirectory $$i";             \
                ( cd $$i; $(MAKE) $(MFLAGS) all );              \
                if test $$? != 0 ; then exit 1; fi ;    \
                echo " ";                                                               \
        done

论坛徽章:
0
34 [报告]
发表于 2007-03-16 16:26 |只看该作者
Makefile、.h文件、.c文件、.o文件等等,有时候还有很多其他文件,都放在一个目录下,看着不乱么???

分目录管理一下,归归类,就比较舒服了


然后,各种文件不在同一目录下,

编译连接就需要手动指定路径。

我这个是希望使用通配符的方法,方便Makefile编写

这样可以体现Makefile的优势,

不然还不如用SHELL

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
35 [报告]
发表于 2007-03-19 14:14 |只看该作者

  1. $(OBJ_DIR)%.o:$(SRC_DIR)%.c $(OBJ_DIR)%.d
  2.         $(CC) $(FLAG_COMPLE) $< -o $@
  3. $(OBJ_DIR)%.d:$(SRC_DIR)%.c
  4.         $(CC) $< -MM -o $@
复制代码

上边 %.d这个依赖是不是有点儿多余啊.


  1. $(OBJ_DIR)%.o:$(SRC_DIR)%.c
  2.            $(CC) $(FLAG_COMPLE) $< -o $@
复制代码

这样不就够了吗.

论坛徽章:
0
36 [报告]
发表于 2007-03-19 14:35 |只看该作者
不可以

那个是检查依赖用的

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
37 [报告]
发表于 2007-03-19 14:41 |只看该作者
GCC会自动推导的...

论坛徽章:
0
38 [报告]
发表于 2007-03-19 14:45 |只看该作者
168那个机器的不会,我测试过了,必须手动的

可能和版本有关吧

我再测试一下

论坛徽章:
0
39 [报告]
发表于 2007-03-20 09:33 |只看该作者
我昨天测试了一下17楼的那个, 不能正确处理头文件依赖
需要加上:
DEPS = $(OBJS:.o=.d)  # 这个只用于当前目录
-include $(DEPS)

我机器: FreeBSD 6.2,  GNU Make 3.81

[ 本帖最后由 I/0 于 2007-3-20 09:36 编辑 ]

论坛徽章:
0
40 [报告]
发表于 2007-03-20 09:51 |只看该作者
能不能给出你的测试 过程

详细一点,

(建议使用此Makefile时, make dir 创建需要的目录结构)

我看一下,以便修改Bug

呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP