Makefile 使之比较两个文件夹
我想使用makefile来比较两个文件夹。如果两个文件夹相等,我不做任何事情,但如果它们不同,我想创建一个文件夹。这是我的makefile,它正在抱怨:Makefile 使之比较两个文件夹,makefile,Makefile,我想使用makefile来比较两个文件夹。如果两个文件夹相等,我不做任何事情,但如果它们不同,我想创建一个文件夹。这是我的makefile,它正在抱怨: #BINDIREXISTS:=T ifeq "../.build" "../TopicA" /bin/sh: ifeq: not found make: *** [checkDest] Error 127 生成文件如下所示: PROJNAME=TopicA TOP=.. SRCDIR=src BUILDDIR=.build SRC=Topic
#BINDIREXISTS:=T
ifeq "../.build" "../TopicA"
/bin/sh: ifeq: not found
make: *** [checkDest] Error 127
生成文件如下所示:
PROJNAME=TopicA
TOP=..
SRCDIR=src
BUILDDIR=.build
SRC=TopicA.cpp
EXECUTABLE=TopicA.exe
CC=g++
#################################
#MACROS:
define bindirchk
#BINDIREXISTS:=$(shell if [ -d '$(TOP)/$(1)/$(2)/' ]; then echo "T"; else echo "F"; fi )
ifeq "$(strip $(TOP)/$(1))" "$(strip $(TOP)/$(2))"
echo "T"
else
echo "F"
endif
endef
define mkbuilddirs
@echo creating build directories $(TOP)/$(1) and $(TOP)/$(1)/$(2)
$(shell mkdir -p $(TOP)/$(1) $(TOP)/$(1)/$(2))
endef
#################################
#main targets and pre-reqs
all: checkDest
#$(CC) $(SRCDIR)/$(SRC) -o $(TOP)/$(BUILDDIR)/$(PROJNAME)/$(EXECUTABLE)
checkDest:
$(call bindirchk,$(BUILDDIR),$(PROJNAME))
echo $(BINDIREXISTS)
if [ "$(BINDIREXISTS)" "F" ]; then
# echo test found to be true
$(shell mkdir -p $(TOP)/$(1) $(TOP)/$(1)/$(2))
fi
clean:
rm -rf $(TOP)/$(BUILDDIR)/*
Make没有一个本地方法来比较两个文件是否相等(从而比较两个目录)。因此,您必须在Make将调用的某种脚本中执行相等性检查(可能您已经在尝试这样做了,很难说)。如果你这样做了,你也可以在脚本中加入条件和创建新目录的代码;把它放到makefile中,你真的什么也得不到。因此,这实际上是一个脚本问题,一旦脚本正常工作,从makefile调用它将变得微不足道
(我推荐Perl,但我听说Python也很好。)请将代码格式化为代码,使用编辑窗口上方的按钮。这将使你的问题更容易阅读,更多的SOER将愿意提供帮助。