我有一个具有此目录结构的 C++ 项目:
src
├── database
│ ├── database.hpp
│ ├── leveldb.cpp
│ └── leveldb.hpp
├── Makefile
└── server.cpp
server.cpp 包括“database/database.hpp”和“database/leveldb.hpp”。leveldb.cpp 包括“leveldb.hpp”
到目前为止,我的 Makefile 是这样的(请记住,$LEVELDB 是 Google 的 leveldb 库的路径,与我的 leveldb.hpp 和 cpp 文件不同,它们代表一个定制的类):
CC=g++
LEVELDB=/route/to/Googles/library/leveldb
BOOST=/route/to/boost/cpp-netlib-0.9.2
DATABASE=/route/to/my/project/src/database
CFLAGS=-I$(LEVELDB)/include -I$(BOOST) -Wall -O2
LDFLAGS=-L$(LEVELDB) -lleveldb -lpthread -lboost_system -lboost_thread -pthread
all:server
server: server.cpp database/leveldb.cpp
$(CC) -o $@ $(CFLAGS) -I$(DATABASE) $< $(LDFLAGS) -L$(DATABASE)
我无法编译它。它给了我一个错误“未定义的对 `LevelDB::LevelDB(std::basic_string, std::allocator >)' 的引用”,我知道这是由于 Makefile 造成的编译错误,因为当我把它全部放入时一切正常一个单一的源文件。
我非常感谢你的帮助。
谢谢 :)