2017-12-17 11 views
2
#include <Dao/Dao.h> 
#include <Cola/Cola.h> 
int main(){return 0;} 

私はこのメイクファイルでそのコードをコンパイルしようとしています:私は、メインのファイルが別のディレクトリにある場合、.hファイルを追加するにはどうすればよいですか?

出力にある同じディレクトリにDao.hとCola.hを取るとき

DIR = -I/usr/include/cppconn -I/home/panda/Documents/eclipse-workspace/Computacion/Cola -I/home/panda/Documents/eclipse-workspace/Computacion/Dao 
main: main.o Dao.o Cola.o Nodo.o 
     $(CXX) -Wall $(DIR) -o main main.o Dao.o Cola.o Nodo.o -L/usr/lib -lmysqlcppconn 

それは完璧に動作メイクの:

g++ -c -o main.o main.cpp 
main.cpp:2:21: fatal error: Dao/Dao.h: No such file or directory 
compilation terminated. 
<builtin>: recipe for target 'main.o' failed 
make: *** [main.o] Error 1 
+0

'ディレクトリ/コンピュータ/コーラで見てください。 Cファイルはを探していますので、何が検索されるかはblah/Computacion/Cola/Cola/Cola.hです。 '-I/home/panda/Documents/eclipse-workspace/Computacion'は必要なパスを与えるはずです。 – stackptr

+3

を使って一つのディレクトリで '-I /ホーム/パンダ/ドキュメント/日食-ワークスペース/ Computacion /コーラを行く必要があり、同じ作業ディレクトリにしておく必要があり – user4581301

+1

ColaとDaoという名前の行に2つのディレクトリがありますか?そうでない場合は、インクルードパスが正しくないので、インクルードにディレクトリ名を含める予定がある場合は、ColaディレクトリとDaoディレクトリがあるディレクトリを指す必要があります。 '<>'の代わりに引用符を使うこともできます。 –

答えて

1

使用この:

あなたの #includeステートメントですでに DaoColaが指定されているので、

です。したがって、あなたのビルドフラグに親ディレクトリのDaoColaを追加する必要があります。

0

メイクファイルとは別のディレクトリにあるため、オブジェクトファイルへのディレクトリパスを追加する必要がありました。

DIR = -I/usr/include/cppconn -I/home/panda/Documents/eclipse-workspace/Computacion 
OBJS = main.o ./Dao/Dao.o ./Cola/Cola.o ./Cola/Nodo.o ./Persona/Persona.o 
main: $(OBJS) 
g++ -Wall $(DIR) $(OBJS) -o main -L/usr/lib -lmysqlcppconn 
それはそうyoullの `...`記法
関連する問題