次のディレクトリ構造を持つ 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 によるコンパイル エラーであることがわかっています。 1 つのソース ファイル。
どうもありがとうございました。
ありがとう :)