我需要在makefile中进行左移和OR运算。如下所示:
a = $(b) << 2 | 0x1
...其中b
是使用makefile中的$(shell )
命令读取的数值。
我尝试了以下但没有帮助。
a = $(shell echo $(b) << 2 | bc)
我的意思是a
得到b
的值但不是运行脚本后的移位值。
答案 0 :(得分:1)
bc
的版本我可以访问不支持按位操作,所以它似乎在咆哮错误的树。默认shell gnumake
使用的是/bin/sh
,但您可以使用bash代替,然后直接访问bash的按位运算符:
SHELL=bash
a := $(( $(b) << 2 | 1 ))
感谢@EtanReisner指出这将导致整个字符串存储在变量a
中,如果在配方中使用它,则会对其进行评估。如果你想直接存储在你的计算值仍然需要shell来评估它:
a := $(shell echo "$$(( $(b) << 2 | 1 ))" )