2016-03-27 12 views
1

私は、C + +で、私がいくつかのサードパーティのライブラリを試しているところまで自信を持っています。私は現在Aquila DSP C++ライブラリをQtプロジェクトに統合しようとしています。私は図書館内のヘッダーに関する問題を見つけました。ライブラリをナビゲートヘッダーはC++ライブラリ内のパスを含む - ベストプラクティス

は、私は..私はEVER内のファイル構造を変更しないでください、私はこれから取得していますどのような

#include "../../global.h" 

として使用する検索パスステートメントを含んでのいくつかがあることに気付きますとしょうかん。たとえば、すべての単一ファイルが同じディレクトリに含まれるように、ライブラリ内のすべてのサブフォルダを単純に削除するとします。これを行うことで、私は本質的にライブラリを壊してしまい、インクルードのすべてのファイルパスを再定義する必要があります。正しいのでしょうか?

これは別の質問につながります。プロジェクト内でライブラリを使用している場合、このライブラリをどこに保存するのがベストプラクティスですか?コンピュータの1か所にライブラリを置いて、複数のプロジェクトから参照できるようにするのがベストプラクティスですか?または、私のプロジェクトが入っているディレクトリにライブラリをインスタンス(コピー)するのが良いでしょうか?

ご協力いただきありがとうございます。

答えて

2

良い例では、名前空間構造をマッピングするディレクトリツリーを使用しています(boost libを参照)。

現在のファイルへの相対パスを維持するのが難しい場合があります。実際には、-Iフラグまたは同等のコンパイラ設定で検索パスを追加し、現在のファイルパスのどこにあるかのようにすべてのヘッダーを使用します。

これは、プロジェクトマネージャーまたはメイクファイルを使用すると簡単に保守できます。

プレインストールされていないと思われる外部ライブラリをプロジェクトで使用している場合は、externalまたはdepsフォルダにすべてを追加して、メンテナにそのフォルダの内容を無視する必要があることを明確にすることができます。

標準のライブラリは/ usr/lib、/ usr/includeの下のヘッダ、/ usr/shareの下にあります。ユーザーがコンパイルしてインストールしたライブラリは、/ usr/local/lib、/ usr/local/includeおよび/ user/local/shareにあります。

1

正しい。すべてのヘッダーを同じディレクトリに置く場合は、すべてのインクルードディレクティブを更新する必要があります。

ライブラリをコンピュータのどこかに置いて参照することをお勧めします。コンパイラの-Iディレクティブを使用する必要があります。例えば、g ++ -I/your/lib/dir/headers ...そしてソースコードに単純なインクルードディレクティブを使用します。

関連する問題