我是gnu make的新手。
我在附近搜索但是找不到任何有效的东西......DEFTOOL= /usr/bin/i686-mingw32- /usr/bin/x86_64-w64-mingw32- /usr/bin/
如果字符串“mingw”在当前工具中,我想更改二进制文件的扩展名,所以
$(foreach c, $(DEFTOOL),$(call dist_make, $(c)))
...
define dist_make
result= ${shell echo $(1) | grep mingw }
echo x$(result)x
# $(if $(result),\
# $(1)gcc $(DIST_CFLAGS) -o cap2hccap$(WINEXT) ./cap2hccap.c; echo "windows";,
# $(1)gcc $(DIST_CFLAGS) -o cap2hccap$(LNXEXT) ./cap2hccap.c; echo "linux"; \
# )
endef
其中LNXEXT为空,WINEXT为“.exe” 我无法做到这一点...... 如果函数的参数包含“mingw”,我怎么知道?
PS:
我知道64位和32位mingw输出是相同的,但是当我理解了如何检查字符串是否在另一个内部时,我将修复它。
如果你知道更好的方法来自动化交叉开发建设吐出来的话:)
答案 0 :(得分:2)
你的问题有点不清楚。如果要在任何规则之外更改变量:
ifneq ($(findstring mingw,$(DEFTOOL)),)
FILENAME = foo.xxx
endif
如果要在规则内有条件地重命名文件:
someTarget:
ifneq ($(findstring mingw,$(DEFTOOL)),)
mv foo.aaa foo.xxx
endif
您也可以将条件放在命令中,但我看不出你想要的原因。