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")这个一直失败 。。。
7 个解决方案
#1
寻大神帮助,指点迷津
#2
我一般是这么处理的
install:
@if [ ! -f $(OBJSDIR) ];then \
mkdir -p $(OBJSDIR) \
fi \
#3
麻烦在帮我看看,一直报错误
if [ ! -f ../temp/client_net/linux/ ]; then \
mkdir -p ../temp/client_net/linux/ \
fi
/bin/sh: -c: line 3: syntax error: unexpected end of file
make: *** [dir] Error 1
#4
makefile格式要求比较严格,@if [ ! -f $(OBJSDIR) ];then \前面应该是个tab键,不能是空格;
#5
ifeq ($(wildcard $(OBJSDIR)), )
mkdir -p $(OBJSDIR)
endif
mkdir -p $(OBJSDIR)
endif
#6
问题以解决,多谢楼上两位
还是shell不熟练
后面需要;做间隔符
if语法好多空格啊,蛋痛死
还是shell不熟练
if [ ! -d $(OBJSDIR) ]; then \
mkdir -p $(OBJSDIR); \
fi
后面需要;做间隔符
if语法好多空格啊,蛋痛死
#7
虽然没试过,想法应该也可以
#1
寻大神帮助,指点迷津
#2
我一般是这么处理的
install:
@if [ ! -f $(OBJSDIR) ];then \
mkdir -p $(OBJSDIR) \
fi \
#3
麻烦在帮我看看,一直报错误
if [ ! -f ../temp/client_net/linux/ ]; then \
mkdir -p ../temp/client_net/linux/ \
fi
/bin/sh: -c: line 3: syntax error: unexpected end of file
make: *** [dir] Error 1
#4
makefile格式要求比较严格,@if [ ! -f $(OBJSDIR) ];then \前面应该是个tab键,不能是空格;
#5
ifeq ($(wildcard $(OBJSDIR)), )
mkdir -p $(OBJSDIR)
endif
mkdir -p $(OBJSDIR)
endif
#6
问题以解决,多谢楼上两位
还是shell不熟练
后面需要;做间隔符
if语法好多空格啊,蛋痛死
还是shell不熟练
if [ ! -d $(OBJSDIR) ]; then \
mkdir -p $(OBJSDIR); \
fi
后面需要;做间隔符
if语法好多空格啊,蛋痛死
#7
虽然没试过,想法应该也可以