我尝试使用clang和libc ++编译项目。这是我的makefile:
EXEC = ModularMadness
SRCDIR = src/
INC =-I$(SRCDIR)
SOURCES := $(wildcard $(SRCDIR)*.cpp) $(wildcard $(SRCDIR)*/*.cpp)
OBJECTS = $(SOURCES:.cpp=.o)
CXX = clang++
CXX_FLAGS = -std=c++1y -stdlib=libc++ $(INC)
all: $(EXEC)
$(EXEC): $(OBJECTS)
$(CXX) $(OBJECTS) -o $(EXEC)
%.o: %.cpp
$(CXX) -c $(CXX_FLAGS) $< -o $@
.PHONY: all clean
clean:
@echo Cleaning...
@rm -f $(EXEC) $(OBJECTS)
@echo done
.o文件创建工作正常,但我遇到了多个错误
链接器命令期间In function 'std::__1::weak_ptr<module::Module>::lock() const': undefined reference to 'std::__1::__shared_weak_count::lock()'
。
有人可以帮我理解这里的问题吗?
这个makefile在OS X上运行完美。
答案 0 :(得分:1)
我错过了链接标记-lc++
...谢谢perencia。
这是工作的makefile:
EXEC = ModularMadness
SRCDIR = src/
INC =-I$(SRCDIR)
SOURCES := $(wildcard $(SRCDIR)*.cpp) $(wildcard $(SRCDIR)*/*.cpp)
OBJECTS = $(SOURCES:.cpp=.o)
CXX = clang++
CXX_FLAGS = -std=c++1y -stdlib=libc++ $(INC)
all: $(EXEC)
$(EXEC): $(OBJECTS)
$(CXX) $(OBJECTS) -o $(EXEC) -lc++ # Here
%.o: %.cpp
$(CXX) -c $(CXX_FLAGS) $< -o $@
.PHONY: all clean
clean:
@echo Cleaning...
@rm -f $(EXEC) $(OBJECTS)
@echo done