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/