开发者

make to compare two folders

开发者 https://www.devze.com 2023-01-19 15:44 出处:网络
I want to use a makefile to compare two folders. If the two folders are equal I don\'t do anything, but if they are different I want to create a folder. Here is my makefile which is complaining about:

I want to use a makefile to compare two folders. If the two folders are equal I don't do anything, but if they are different I want to create a folder. Here is my makefile which is complaining about:

#BINDIREXISTS:=T
ifeq "../.build" "../TopicA"
/bin/sh: ifeq: not found
make: *** [checkDest] Error 127

The makefile is the following:

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 [ "$(BINDIRE开发者_开发知识库XISTS)" "F" ]; then 
    #   echo test found to be true
        $(shell mkdir -p $(TOP)/$(1) $(TOP)/$(1)/$(2))
    fi

clean:
        rm -rf $(TOP)/$(BUILDDIR)/*


Make doesn't have a native method for comparing two files for equality (and thereby two directories). So you'll have to do the equality-checking in some kind of script which Make will call (maybe you're trying to do that already, it's hard to tell). And if you do that, you might as well put conditional and the code for making a new directory in the script as well; you really don't gain anything by putting that in the makefile. So this is really a scripting problem, and once you have the script working, calling it from the makefile will be trivial.

(I recommend Perl, but I hear Python is very good too.)

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号