2013-07-19 1 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

CCFLAGSCXXFLAGS으로 바꾸거나 그 반대의 경우도 마찬가지입니다.

그리고이 깃발의 철자는 -std=c++0x입니다 (감사합니다, @Pixelchemist).

+0

SB'CXXFLAGS' 대신'CCFLAGS'를 사용하면 다음과 같은 결과를 얻습니다 :'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

관련 문제