如果使用特定的内核构建Makefile

时间:2018-08-24 15:42:26

标签: makefile

我真的为这个Makefile苦苦挣扎。我有一个既要在旧的Fedora计算机上也要在新的CentOS计算机上构建的应用程序。我想根据我使用的计算机来更改变量。

这是我尝试过的方法,但似乎不起作用。

UNAME := $(uname -r)
ifeq ($(UNAME),2.6.32.11-99.fc12.x86_64)
        DIRS = Control Simulator
else
        DIRS = Control
endif

我的问题是,如何使它在某些独立的Makefile中工作以进行测试?这使我当前出现“ *** No target。Stop”错误。之后,我应该可以在我的真实Makefile中实现它。

1 个答案:

答案 0 :(得分:1)

如错误所示,您需要提供一个构建目标。一个不包含变量赋值之外的内容的makefile将不执行任何操作。也许您想添加:

all:
        @echo 'DIRS = $(DIRS)'

看看您获得了什么价值。

但是,我已经看到这不能按书面要求进行。 Makefile语法不是Shell语法,因此语句$(uname -r)试图扩展名为uname -r的make变量(就像$(FOO)试图扩展名为FOO的make变量一样) 。该变量未设置,因此UNAME将始终设置为空字符串。

您可能想要这个:

UNAME := $(shell uname -r)

调用make shell函数以运行Shell脚本并扩展到结果。