2

我是 gnu 的新手。

我四处搜寻,但找不到任何工作...
我有一个工具前缀 suxh 的列表:

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 输出是相同的,但是当我了解如何检查一个字符串是否在另一个字符串中时,我会修复它。
如果您知道自动化跨开发构建的更好方法,那就吐出来:)

4

1 回答 1

2

你的问题有点不清楚。如果要更改变量,则在任何规则之外:

ifneq ($(findstring mingw,$(DEFTOOL)),)
FILENAME = foo.xxx
endif

如果要在规则内有条件地重命名文件:

someTarget:
ifneq ($(findstring mingw,$(DEFTOOL)),)
    mv foo.aaa foo.xxx
endif

您也可以将条件放在command中,但我不明白您为什么要这样做。

于 2012-06-15T20:05:02.513 回答