Nan*_*iao 3 freebsd makefile gnu-make
我的FreeBSD是11.0,并发现make无法处理ifdef指令。例如:
ifdef VERBOSE
Q :=
else
Q := @
endif
Run Code Online (Sandbox Code Playgroud)
该make会抱怨:
make: "/root/Project/powermon/Makefile" line 13: Need an operator
make: "/root/Project/powermon/Makefile" line 15: Need an operator
make: "/root/Project/powermon/Makefile" line 17: Need an operator
Run Code Online (Sandbox Code Playgroud)
我目前的解决方案正在使用gmake。那么是否有任何make端口FreeBSD支持处理ifdef?
小智 5
BSD make 使用不同的语法并具有与 GNU make 不同的特性。对于 BSD make,您显示的代码段应如下所示:
.ifdef VERBOSE
Q :=
.else
Q := @
.endif
Run Code Online (Sandbox Code Playgroud)
您基本上有三个选择:
make。makemakecmakeGNUmakefile,因此它永远不会被makeGNU make 之外的任何人解释)并依赖于 GNU make 几乎随处可用的事实。对于 FreeBSD,这意味着安装适当的端口。如果您使用第三个选项,您可以添加一个“包装器” Makefile,例如:
GNUMAKE?= gmake
all:
${GNUMAKE} $@
.DEFAULT:
${GNUMAKE} $@
.PHONY: all
Run Code Online (Sandbox Code Playgroud)
make在 BSD 上键入将导致 BSD make 读取此文件并相应地调用gmake. 在GNU系统(其中make是GNU MAKE),当有这个文件将被忽略GNUmakefile- GNU化妆喜欢这种经过短短Makefile。
| 归档时间: |
|
| 查看次数: |
1120 次 |
| 最近记录: |