makefile - 那么 "is"AM_(F)CFLAGS 是什么?

标签 makefile autotools

autotools 文档非常困惑。我正在编写 Fortran,因此 AM_CFLAGS 等效项是 AM_FCFLAGS。两者的工作方式完全相同(大概)。

首先,从概念上讲,AM_CFLAGS 实际上“是什么”?显然,“CFLAGS”位与设置编译器标志有关。但是“AM_”部分是什么意思?

关于如何使用它的建议似乎是相互矛盾的。有人说不要放在Makefile.am中,有人说不要放在configure.ac中。谁是对的?

这是我当前的 Makefile.am:

AM_FCFLAGS = -Wall -O0 -C -fbacktrace

.f90.o:
    $(FC) -c $(AM_FCFLAGS) $<

如果我使用 gfortran 进行编译,我想要发生的是默认使用“-Wall -O0 -C -fbacktrace”进行编译。然而,用户可能想要使用不同的编译器,例如 FC=ifort,在这种情况下,他们可能必须传入 FCFLAGS="whatever"并完全废弃 AM_FCFLAGS

如果用户仍在使用 gfortran,他们还可以覆盖配置选项中的默认 AM_FCFLAGS 吗?

基本上,WTF?

最佳答案

AM_FCFLAGS (以及类似的 AM_CFLAGS 和类似的)被设计为用户不可覆盖,因此您不应该将这些选项放在那里,除非您希望它们始终存在.

用户可以将自己的 FCFLAGS 作为其 ./configure 调用的一部分传递 - 如果您想默认为这些而不是 autoconf 的默认值,您可以做什么其本身就是更改 configure.ac 并将默认标志(说实话,我不知道 Fortran 的情况)与当前的 FCFLAGS 进行比较,如果它们匹配,将 FCFLAGS 替换为您的默认值。

关于makefile - 那么 "is"AM_(F)CFLAGS 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35117315/

相关文章:

c - header 的宏定义,放在哪里?

c - 如何制作makefile?

objective-c - 如何从 Xcode 项目生成 Makefile?

c++ - 每次将目标文件转储到其他目录时,makefile 都会重建

c - 自动从静态库中删除文件

linux - 将二进制文件安装到/bin、/sbin、/usr/bin 和/usr/sbin,与 --prefix 和 DESTDIR 交互

c++ - ld : duplicate symbol

c - 使用 GNU Autotools 获取 GCC 包含路径

c - 将从源代码构建的库链接到由 autotools 管理的程序

makefile - autotools -- make[1] : *** No rule to make target `all' . 停止