我有一个项目,每个子目录中都有一个 Makefile.am。
如何将 AM_CFLAGS
变量设置从父 Makefile.am 传播到其他子目录的 Makefile.am(子 make)?
我知道以下方法:
导出
变量include
语句到通用${top_srcdir}/Makefile_cflags.am
文件。MAKEFLAGS
递归 make 不是一种选择,我回避 include
和 MAKEFLAGS
语句方法。
GNU 手册似乎没有清楚地概述如何将编译器/链接器设置传播到子 make。
最佳答案
事实证明,这毕竟是一个 autoconf
/configure.ac
解决方案。 GNU 称之为输出变量
。
为了将 CFLAGS
从父 Makefile
传播到每个子 make(子目录的 Makefile),我将以下几行添加到
配置.ac`:
AC_SUBST(AM_CFLAGS)
然后,对于每个子品牌,我添加了以下行来“导入”该变量:
AM_CPPFLAGS = @AM_CPPFLAGS@
然后执行 autogen.sh
来重建 configure.in
、Makefile.in
和 Makefile
。然后执行 configure
并立即传播 AM_CFLAGS
。
对于 AM_CPPFLAGS
、AM_CXXFLAGS
和 AM_LDFLAGS
也是一个有用的解决方案。
此处给出的 AC_SUBST
的更多详细信息:https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Setting-Output-Variables.html
关于makefile - 在每个子目录(子 make)中的 Makefile.am 上使用相同的 CFLAGS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43827664/