makefile - 如果使用特定的内核构建 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 中工作以进行测试?这给了我“***没有目标。停止”目前的错误。之后我应该能够在我真正的 Makefile 中实现它。
解决方案
正如错误所说,您需要提供一个构建目标。除了变量赋值之外不包含任何内容的生成文件不会做任何事情。也许您想添加:
all:
@echo 'DIRS = $(DIRS)'
看看你获得了什么价值。
但是,我已经可以看到这不会像所写的那样工作。Makefile 语法不是 shell 语法,因此该语句$(uname -r)
试图扩展一个名为的 make 变量uname -r
(就像$(FOO)
试图扩展一个名为 的 make 变量一样FOO
)。该变量未设置,因此UNAME
将始终设置为空字符串。
你可能想要这个:
UNAME := $(shell uname -r)
调用 makeshell
函数以运行 shell 脚本并展开结果。
推荐阅读
- reactjs - material-ui 小吃吧改变颜色而不为每种颜色制作新的?
- pytorch - PyTorch 的输入类型(torch.FloatTensor)和权重类型(torch.cuda.FloatTensor)应该是一样的但是我的数据已经推送到GPU
- python - 如何遍历一个元素并使用 .split() 元素从显示的列表中删除冒号?
- reactjs - 如何使用react-spring顺序执行两个动画?
- python - 从列中的相似值创建嵌套字典并使用值作为字典的键包含具有该值的所有行
- for-loop - WS2812B的第一个led在代码进入for循环时开始点亮
- java - Resttemplate JUNIT Exchange方法无法解决
- python - Python 如何在没有 linter 的情况下迭代 StrEnum(PyCharm 检查)未解析的引用
- java - findViewById 在 activity_main 中找不到 RecyclerView
- android - Android - 如何查找已安装应用的 Intent