Makefile:根据CC/CX/FC值更改编译器标志

Makefile: change compiler flags based on CC/CXX/FC values

本文关键字:编译器 标志 CX 根据 CC Makefile FC      更新时间:2023-10-16

这似乎很荒谬,但我找不到问题。无论如何,我正在编写一个makefile,我只想有一个条件语句,根据GNU或Intel编译器是否用于编译程序,设置不同的CFLAGS,由环境变量CC.设置

现在,GNU制造手册中有一节关于这一点,它说要做以下事情:

https://ftp.gnu.org/old-gnu/Manuals/make-3.79.1/html_chapter/make_7.html

ifeq ($(CC),gcc)
  libs=$(libs_for_gcc)
else
  libs=$(normal_libs)
endif

(好吧,设置库不是标志,但不管怎样,都是一样的想法)。好吧,但这肯定只是条件句如何工作的一个例子,因为在实践中,这显然是一种愚蠢的方式。CC变量可以包含除"gcc"之外的所有内容,并且仍然可以有效地使用GNUC编译器。即使只是在CC中指定编译器的绝对路径也会破坏这个例子。

那么,明智、稳健的方法是什么呢?此外,如果这很重要的话,我也想对C++和Fortran编译器的选择做同样的事情。

您说得对,这并不那么健壮。更健壮的方法可以是使用findstring命令,例如:

ifneq (,$(findstring gcc,$(CC)))
  libs=$(libs_for_gcc)
else
  libs=$(normal_libs)
endif