Я пытаюсь создать инструмент, который использует colladadom
, но я получаю ошибки компоновщика.Это мой make-файл
CXXFLAGS = -Wall -fPIC -g -t
OBJECTS = mesher.o oar.o primitive.o assigner.o meshmerizer.o primmesher.o colladifier.o main.o
LIBS = -I/opt/local/include -L/opt/local/lib -lboost_system -lboost_filesystem - lcollada14dom
default: all
all: $(OBJECTS)
$(CXX) $(CXXFLAGS) -o oarcoll $^ $(LIBS)
main.o : src/meshmerizer.h src/primmesher.h src/main.cpp
$(CXX) $(CXXFLAGS) -c $^
colladifier.o : src/colladifier.cpp
$(CXX) $(CXXFLAGS) -c $^
assigner.o : lib/assigner.cpp
$(CXX) $(CXXFLAGS) -c $^
primitive.o : lib/assigner.h src/utils.h src/prim_enum.h src/primitive.cpp
$(CXX) $(CXXFLAGS) -c $^
mesher.o : src/mesher.cpp
$(CXX) $(CXXFLAGS) -c $^
oar.o : src/oar.cpp
$(CXX) $(CXXFLAGS) -c $^
primmesher.o : src/primmesher.cpp
$(CXX) $(CXXFLAGS) -c $^
meshmerizer.o : src/meshmerizer.cpp src/primmesher.h
$(CXX) $(CXXFLAGS) -c $^
clean:
rm -f oarcoll main.o $(OBJECTS) *~
Когда я компилирую, я получаю следующий результат:
Undefined symbols for architecture x86_64:
"boost::system::generic_category()", referenced from:
__static_initialization_and_destruction_0(int, int)in colladifier.o
__static_initialization_and_destruction_0(int, int)in main.o
"boost::system::system_category()", referenced from:
__static_initialization_and_destruction_0(int, int)in colladifier.o
__static_initialization_and_destruction_0(int, int)in main.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [all] Error 1
Я могу скомпилировать без проблем, если я делаю все это в одной строке и не делаю.o файлы и свяжите их позже.Т.е. это:
g++ domTest.cc -I/opt/local/include -L/opt/local/lib -lboost_system -lcollada15dom -o domTest
отлично работает на той же машине.
Я запустил nm на libboost_system.dylib, и неопределенные символы появляются в дампе.
Существует множество других подобных тем, я видел их и пробовал решения, но они все еще не работают для меня.
Есть идеи?