Makefile Make:基于目标设置变量

Makefile Make:基于目标设置变量,makefile,Makefile,我想根据指定的目标设置一个变量。 例如: if target == filename_a then VAR1 = YES if target == filename_b then VAR2 = YES 显然,这是伪代码,不是正确的make语法 我真正想做的是包含不同的make文件,并包含依赖于目标的目录。一些目标共享相同的设置,因此更容易在一个makefile中维护 稍后将使用它的示例: ifeq ($(VAR1), YES) include foo.mk endif ifeq (

我想根据指定的目标设置一个变量。 例如:

if target == filename_a then
  VAR1 = YES
if target == filename_b then
  VAR2 = YES
显然,这是伪代码,不是正确的make语法

我真正想做的是包含不同的make文件,并包含依赖于目标的目录。一些目标共享相同的设置,因此更容易在一个makefile中维护

稍后将使用它的示例:

ifeq ($(VAR1), YES)
  include foo.mk
endif
ifeq ($(VAR2), YES)
  include baz.mk
endif
不幸的是,无法使用以下语法:

target : VAR1 = YES
因为这个变量赋值只有在实际构建目标的过程中才有效,据我所知

目标环境是Solaris下的ClearMake 7,因此请避免使用任何GNU Make特定的解决方案

谢谢


编辑:
据我所知,make在处理步骤中目标可用的情况下不起作用。因此,所要求的功能很可能确实存在。

我很惊讶这是否可行,因为据我所知,在它知道需要实现什么目标之前,让流程包含语句。但我对ClearMake一无所知,我也不是一个真正的专家,所以希望有人能证明我错了……

是的,不幸的是,你似乎是对的。感谢您的回复。请告诉我们有关包含文件设置和命名的更多信息。为什么需要在多个包含文件之间进行选择,它们最终定义了哪些变量?