【原文: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