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

时间:2016-05-10 14:12:14

标签: c++ c gcc makefile fortran

似乎很荒谬,对此没有任何疑问,但我找不到一个。无论如何,我正在编写一个makefile,我只想要一个条件语句来设置不同的CFLAGS,具体取决于GNU或Intel编译器是用于编译程序,由envrionment变量CC设置。

现在,GNU make手册中有一节对此进行了说明,并说它可以执行以下操作:

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”之外的所有方式,并且仍然可以有效地使用GNU C编译器。即使只是在CC中指定编译器的绝对路径也会破坏这个例子。

那么明智,有力的方法是什么?另外,如果它很重要,我也希望为C ++和Fortran编译器选择做同样的事情。

1 个答案:

答案 0 :(得分:2)

你是对的,这不是那么强大。更健壮的方法可以是使用findstring命令,例如:

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