免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3132 | 回复: 7
打印 上一主题 下一主题

Make生成多个目标文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-24 17:32 |只看该作者 |倒序浏览
我现在有一些文件1.cpp 2.cpp 3.cpp,其中每个文件中都存在main函数,现在想生成多个可执行的文件,怎么来写Makefile。
谢谢~~

论坛徽章:
0
2 [报告]
发表于 2008-03-24 18:08 |只看该作者

回复 #1 ateny 的帖子

all:
    gcc -o 1 1.cpp
    gcc -o 2 2.cpp
    gcc -o 3 3.cpp

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
3 [报告]
发表于 2008-03-24 21:34 |只看该作者

回复 #1 ateny 的帖子

all: exe1 exe2

exe1:
        gcc -o exe1 exe1.c

exe2:
        gcc -o exe2 exe2.c

论坛徽章:
0
4 [报告]
发表于 2008-03-25 01:12 |只看该作者
all: 1 2 3
足够了.

  1. $ echo 'int main(){printf("Hello!\\n");return 0;}' | tee a.c | tee b.c > c.c
  2. $ echo 'all: a b c' > Makefile && make && ./a && ./b && ./c                 
  3. cc    a.c  -o a
  4. cc    b.c  -o b
  5. cc    c.c  -o c
  6. Hello!
  7. Hello!
  8. Hello!
复制代码

论坛徽章:
0
5 [报告]
发表于 2008-03-25 01:28 |只看该作者
原帖由 mymtom 于 2008-3-25 01:12 发表
all: 1 2 3
足够了.

$ echo 'int main(){printf("Hello!\\n");return 0;}' | tee a.c | tee b.c > c.c
$ echo 'all: a b c' > Makefile && make && ./a && ./b && ./c                 
cc    a.c  -o a
...

有点小bug, 只能在ksh下用.
sh csh bash 要改为:
echo 'int main(){printf("Hello!\n");return 0;}' | tee a.c | tee b.c > c.c

论坛徽章:
0
6 [报告]
发表于 2008-03-25 11:15 |只看该作者
多谢大家参与!
主要有很多文件,并且以后也许也会添加,所以有没有更简单的方法.
比如%.exe:%.o
            g++ -o $@ ${OBJS}
       %.o:%.c
            g++ -o $@ $<

类似的.但是我写出来的总是不成功.

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
7 [报告]
发表于 2008-03-29 00:34 |只看该作者
原帖由 ateny 于 2008-3-25 11:15 发表
多谢大家参与!
主要有很多文件,并且以后也许也会添加,所以有没有更简单的方法.
比如%.exe:%.o
            g++ -o $@ ${OBJS}
       %.o:%.c
            g++ -o $@ $<

类似的.但是我写出来的总是不成功.

类似的规则 GNU make 已经内置了。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
8 [报告]
发表于 2008-03-29 00:36 |只看该作者
原帖由 mymtom 于 2008-3-25 01:12 发表
all: 1 2 3
足够了.

$ echo 'int main(){printf("Hello!\\n");return 0;}' | tee a.c | tee b.c > c.c
$ echo 'all: a b c' > Makefile && make && ./a && ./b && ./c                 
cc    a.c  -o a
...

如果 GNU make 的默认规则足够的话,是这样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP