2013-07-19 59 views
0

我想将我的源文件编译为静态库,但是,它似乎并不想工作。这里是代码:Makefile C++ 11 - 编译为静态库

#----------------------------------------------------------------------------- 
# Usage of make file 
#----------------------------------------------------------------------------- 
# Clean operation: 
# make -f MakeClient clean 
# 
# Make operation: 
# make -f MakeClient 
# 
# 


#OBJ = $(SRC:.cpp=.o) 
OBJ_DIR = ./obj 

OUT_DIR= ../lib 
OUT_FILE_NAME = libclient.a 

# include directories 
INCLUDES=-I. -I../common -I../../depends -I../../depends/zlib 

# C++ compiler flags (-g -O2 -Wall) 
CXXFLAGS := -Wall -Wextra -pedantic-errors -std+c++0x 

    # compiler 
    CCC = g++ 


    # Enumerating of every *.cpp as *.o and using that as dependency 
    $(OUT_FILE_NAME): $(patsubst %.cpp,$(OBJ_DIR)/%.o,$(wildcard *.cpp)) 
    $(CCC) -o $(OUT_DIR)/[email protected] $^ -static $(LIB_DIR) $(LIBS) -std=c++11 

#Compiling every *.cpp to *.o 
$(OBJ_DIR)/%.o: %.cpp dircreation 
$(CCC) -c $(INCLUDES) $(CCFLAGS) -o [email protected] $< 

dircreation: 
@mkdir -p $(OUT_DIR) 
@mkdir -p $(OBJ_DIR) 

.PHONY : clean 
clean: 
rm -f $(OBJ_DIR)/*.o $(OUT_DIR)/$(OUT_FILE_NAME) Makefile.bak 

这个问题似乎认识到我正在使用C++ 11,因为实际的代码不能编译。

任何想法?

回答

1

CCFLAGS替换为CXXFLAGS,反之亦然。

而国旗拼写-std=c++0x(谢谢@Pixelchemist)。

+0

SB如果我使用:'CCFLAGS'而不是'CXXFLAGS'我得到以下内容:'g ++:error:无法识别的命令行选项'-std + C++ 0x''? – Phorce

+1

'-std = C++ 11'或'-std = C++ 0x'。 ** = **不** + **。 – Pixelchemist

+0

@Pixelchemist谢谢..这工作!但现在我得到以下错误:'g ++ -o ../lib/libclient.a obj/file1.o obj/file2.o -static ld:找不到-lcrt0.o库 – Phorce