找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 2647|回复: 0

【搬运】【翻译】什么是Makefile.am和Makefile.in?

[复制链接]

1111

主题

1651

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24235 个
贡献
46222 次
宅之契约
0 份
在线时间
2296 小时
注册时间
2014-1-26
发表于 2015-12-26 17:54:27 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
原网址:http://stackoverflow.com/questio ... -am-and-makefile-in

提问:
这两个文件经常在各种开源项目里能见到。它们有什么用?怎么用?

回答:
Makefile.am是程序员写的文件,用于让automake来产生Makefile.in文件(.am指的是automake)。通常可以在各种用tar压缩的源码项目里看到配置脚本用Makefile.in来生成Makefile。

配置脚本自身也是被程序员写的configure.ac(以前是configure.in)生成的。我更喜欢用.ac的后缀(.c指的是autoconf)因为它后缀和生成的Makefile.in不一样,这样我就可以用rm -f *.in来删除所有的自动生成的.in文件而不会删除自己写的configure.ac。因为.in是自动生成的文件,它不会被版本管理软件(比如Git、SVN、Mercurial或CVS等)保存起来。而.ac则会被保存。

建议多看看GNU的Autotools。先了解make和Makefile,然后看看automake、autoconf、libtool等。

参考资料:
http://www.gnu.org/software/auto ... eating-amhello.html

一个例子:
Makefile.am:
  1. SUBDIRS = src
  2. dist_doc_DATA = README.md
复制代码
README.md:
  1. 一些文档
复制代码
configure.ac:
  1. AC_INIT([automake_hello_world], [1.0], [bug-automake@gnu.org])
  2. AM_INIT_AUTOMAKE([-Wall -Werror foreign])
  3. AC_PROG_CC
  4. AC_CONFIG_HEADERS([config.h])
  5. AC_CONFIG_FILES([
  6. Makefile
  7. src/Makefile
  8. ])
  9. AC_OUTPUT
复制代码
src/Makefile.am:
  1. bin_PROGRAMS = autotools_hello_world
  2. autotools_hello_world_SOURCES = main.c
复制代码
src/main.c:
  1. #include <config.h>
  2. #include <stdio.h>

  3. int main (void)
  4. {
  5.         puts ("Hello world from " PACKAGE_STRING);
  6.         return 0;
  7. }
复制代码
用法:
  1. autoreconf --install
  2. mkdir build
  3. cd build
  4. ../configure
  5. make
  6. sudo make install
  7. autoconf_hello_world
  8. sudo make uninstall
复制代码
输出:
  1. Hello world from automake_hello_world 1.0
复制代码
注意:Notes
  • autoreconf --install生成的一些临时文件应该被Git存起来,包括Makefile.in。这语句只需要运行一次。
  • make install安装了以下的文件:
    • 可执行文件,在/usr/local/bin
    • README.md文档,在/usr/local/share/doc/automake_hello_world
例子在GitHub有一份,你可以拿来试试。
https://github.com/cirosantilli/ ... totools/hello-world
回复

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-4-20 09:31 , Processed in 0.036645 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表