似乎很荒谬,对此没有任何疑问,但我找不到一个。无论如何,我正在编写一个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编译器选择做同样的事情。
答案 0 :(得分:2)
你是对的,这不是那么强大。更健壮的方法可以是使用findstring命令,例如:
ifneq (,$(findstring gcc,$(CC)))
libs=$(libs_for_gcc)
else
libs=$(normal_libs)
endif