日期:2014-05-16  浏览次数:20873 次

makefile问题,想像vs一样将目标文件,输出文件存放在指定文件夹,而不是在源文件的目录
SRCDIR=src/
OBJSDIR=../temp/client_net/linux/
TARDIR=../lib/
SRCS=$(wildcard src/*.cpp)
OBJS=$(addprefix $(OBJSDIR), $(notdir $(patsubst %.cpp, %.o, $(SRCS))))
TAR=$(addprefix $(TARDIR), libclient_net.so)
CXXFLAGS=-Iinterface -I.. -fpic
LDFLAGS=-L../lib -lACE -shared
$(shell "if [ ! -f $(OBJSDIR) ]; then mkdir -p $(OBJSDIR) fi")

.PHONY:all clean

all:$(TAR)

$(TAR):$(OBJS)
        $(CXX) $(LDFLAGS) -o $@ $^

$(OBJSDIR)%.o:$(SRCDIR)%.cpp
        $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<

clean:
        @rm $(OBJS) $(TAR)


makefile如上,但是创建目标文件目录总是失败,有什么其他方法吗?
$(shell "if [ ! -f $(OBJSDIR) ]; then mkdir -p $(OBJSDIR) fi")这个一直失败 。。。
Visual?Studio Makefile shell 目录

------解决方案--------------------
我一般是这么处理的


install:
    @if [ ! -f $(OBJSDIR) ];then \
    mkdir -p $(OBJSDIR)  \
    fi \

------解决方案--------------------
ifeq ($(wildcard $(OBJSDIR)), )
mkdir -p $(OBJSDIR)
endif