configure.ac和makefile.am

编译一个库,找寻若干文件,不知如何下手。细读readme才发现,有configure.ac和makefile.am两个文件。此文件是生成configure和makefile必须。

不像只有一个makefile或者Makelist,或qmake或其它, 看来构建工具也是很多种,常见的也就是这几种。不同的语言,不同平台,不同的风格,都会有不同的编译和安装形式,了解常见的几种和后缀,以后也不会如此束手无策。

此处涉及一个autoconf的文件,直接在目录下运行即可,它会找妹configure.ac文件,继之生成configure.再接着生成makefile.这些文件都是和使用主机相关,也没有必要一一深究,掌握其中使用即可

这里有篇文章介绍之http://www.ibm.com/developerworks/cn/linux/l-makefile/

里面有个图片,摘抄下:



  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常抱歉,我混淆了configure.acMakefile.am文件。下面是正确的步骤: 1. 在主项目的configure.ac文件中,使用AC_CONFIG_SUBDIRS宏指定需要包含的子项目目录,例如: ``` AC_CONFIG_SUBDIRS([subdir1 subdir2 subdir3]) ``` 2. 在每个子项目的configure.ac文件中,必须使用AC_CONFIG_AUX_DIR宏来指定子项目中的config.sub和config.guess文件的位置,例如: ``` AC_CONFIG_AUX_DIR([.]) ``` 3. 在每个子项目的Makefile.am文件中,使用ACLOCAL_AMFLAGS变量来指定包含的宏定义文件的位置,例如: ``` ACLOCAL_AMFLAGS = -I m4 ``` 其中,m4是包含宏定义文件的目录。 4. 在每个子项目的Makefile.am文件中,使用AUTOMAKE_OPTIONS变量指定需要使用外部子目录功能,例如: ``` AUTOMAKE_OPTIONS = subdir-objects ``` 5. 在每个子项目的Makefile.am文件中,定义生成的库文件和头文件,并使用INCLUDES变量指定需要包含的头文件路径,例如: ``` lib_LTLIBRARIES = libsubdir1.la libsubdir1_la_SOURCES = subdir1.c subdir1.h INCLUDES = -I$(top_srcdir)/subdir1 ``` 其中,lib_LTLIBRARIES变量指定生成的库文件名,libsubdir1_la_SOURCES变量指定生成库文件所需的源文件和头文件,INCLUDES变量指定需要包含的头文件路径。 6. 最后,在主项目的Makefile.am文件中,使用SUBDIRS变量指定包含的子目录,例如: ``` SUBDIRS = subdir1 subdir2 subdir3 ``` 这样,在主项目的configure脚本执行时,会自动进入每个子项目的目录执行其对应的configure脚本,然后生成各自的Makefile文件。同时,每个子项目的库和头文件也会被自动编译和链接到主项目中。 使用外部子目录功能可以自动化生成子项目的Makefile文件,避免了手动执行子项目的configure脚本的步骤。同时,也可以更灵活地控制子项目的编译和链接过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值