如果使用特定的内核构建生成文件



我真的很纠结这个Makefile。我有一个应用程序,我想在一台旧的 Fedora 计算机上构建,但也要在一台新的 CentOS 计算机上构建。我想根据我使用的计算机更改变量。

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

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

我的问题是,如何让它在一些独立的 Makefile 中工作以进行测试?这给了我"***没有目标。当前停止"错误。之后,我应该能够在我真正的 Makefile 中实现它。

正如错误所说,您需要提供一个要构建的目标。 不包含变量赋值以外的任何内容的生成文件不会执行任何操作。 也许您想添加:

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

看看你获得了什么价值。

但是,我已经可以看到这不会像写的那样工作。 Makefile 语法不是 shell 语法,因此语句$(uname -r)尝试扩展名为uname -r的 make 变量(就像$(FOO)尝试扩展名为FOO的 make 变量一样(。 未设置该变量,因此UNAME将始终设置为空字符串。

您可能想要这个:

UNAME := $(shell uname -r)

以调用 makeshell函数以运行 shell 脚本并展开到结果。

最新更新