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, поскольку фактический код не компилируется.
Любые идеи?
SB Если я использую: 'CCFLAGS' вместо' CXXFLAGS', я получаю следующее: 'g ++: ошибка: непризнанная опция командной строки '-std + C++ 0x''? – Phorce
'-std = C++ 11' или' -std = C++ 0x'. ** = ** не ** + **. – Pixelchemist
@Pixelchemist Спасибо .. Это сработало! Но теперь я получаю следующую ошибку: 'g ++ -o ../lib/libclient.a obj/file1.o obj/file2.o -static ld: библиотека не найдена для -lcrt0.o' – Phorce