我是 makefile 的新手,我陷入了这个问题:如何创建指向找到的目录中所有文件的符号链接,所有这些都在规则中:
我想知道对“查找”的调用是否检索到任何结果。如果我将结果分配给带有“eval”的变量(我知道在规则中设置变量的唯一方法是什么),“ifdef”评估不起作用。
我也尝试过将“”与“ifneq”进行比较,但不起作用。
可能我走错了方向,所以如果有人有替代方法,我将非常感激。
这里是整个 Makefile:(用###### 标记的有趣行)
十分感谢!
DEFAULT_YCS_ROOT := /opt/yujin
all:
ifdef YCS_ROOT
@echo Looking for Yujin maps in ${YCS_ROOT}
else
$(eval YCS_ROOT := ${DEFAULT_YCS_ROOT})
@echo WARNING: YCS_ROOT is undefined. Looking for Yujin maps in default path ${YCS_ROOT}
endif
$(eval MAPS_DIR := $(shell find ${YCS_ROOT} -name yujin_maps))
@echo ${MAPS_DIR} "${MAPS_DIR}"
ifdef MAPS_DIR ######
###### misguided alternative.... ifneq (${MAPS_DIR}, " ")
$(eval DEST_DIR := $(shell pwd)/resources/yaml/stage/maps)
@echo Creating symbolic links on ${DEST_DIR} for every PGM map on ${MAPS_DIR}/maps
rm ${DEST_DIR}/*.pgm
for f in ${MAPS_DIR}/maps/*.pgm; do ln -s $$f ${DEST_DIR}/; done
else
@echo ERROR: Yujin maps package not found in ${YCS_ROOT}. Define YCS_ROOT variable properly
endif