makefile有關問題,想像vs一樣將目標檔案,輸出檔案存放在指定資料夾,而不是在原始檔的目錄

查志強發表於2014-06-09

【原文:http://www.myexception.cn/linux-unix/1355807.html

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

相關文章