我真的为这个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中实现它。
答案 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脚本并扩展到结果。