異なるディレクトリに異なるソースファイルからのMakefileでコンパイルすることはできませんleveldb.hpp "。 leveldb.cppには "leveldb.hpp"が含まれていますは、私は、このディレクトリ構造を持つC++プロジェクトを持っている
私の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 [email protected] $(CFLAGS) -I$(DATABASE) $< $(LDFLAGS) -L$(DATABASE)
私はそれをコンパイルすることはできません。それは私に "LevelDB :: LevelDB(std :: basic_string、std :: allocator>)への定義されていない参照"というエラーを私に与えます。私が知っているのは、Makefileのためにコンパイルエラーです。 1つのソースファイル。
私はあなたの助けに感謝します。
感謝:)
'servidor'は、cppファイルの代わりに' server.o'のようないくつかのオブジェクトファイルに依存すべきではありませんか? .cppを.oに置き換えると、makeはオブジェクトファイルを生成します。 –
データベースディレクトリに何かを構築していますか?あなたが '-L $(DATABASE)'を持っているからです。 – juanchopanza
Makeは実行している全てのコマンド行を正確に表示します。そのため、GCCの呼び出し方法がわかります。それがGCCの呼び出し方法と一致しない場合は、Makefileを修正してください。 –