web-dev-qa-db-ja.com

ヘッダーインクルードパスをソースコードで指定する必要がありますか、それともプロジェクトオプションとして指定する必要がありますか?

基本的に、私は私のコードが言うべきかどうかを尋ねています

#include “../libs/src/my_lib.h”

または

#include “my_lib.h”

コンパイラオプション

-I ../libs/src/   

前者が望ましいと(かなり強く)感じます。

  • ビルドシステムから独立しています
  • 複数ある場合は、「my_lib」の意味を正確に指定します。

現在のプロジェクトでは、後者のスタイルを使用しており、-Iプロジェクトファイルで、次のように述べています。

  • ビルドシステム、コンパイラ、プラットフォームは決して変更しません
  • すべてのファイルには一意の名前が付いています

それは実際には合理的に聞こえるので、私は意見の影響を受けているだけなのか、それとも技術的な理由があるのだろうか(not =意見)一方のアプローチを他方よりも優先する。

現在の職場では、さまざまなプロジェクトで1.60〜1.66の範囲の boost バージョンが使用されており、適切なタイミングでそれらを進めています。プロジェクトインクルードを別のフォルダに再ポイントし、all#includesをそのままにしておく方がはるかに簡単です。

これらのプロジェクトはクロスプラットフォームであり、複数のコンパイラを使用しています。各コンパイラには-I ../libs/src/と同等のものがあり、qmakeを使用してそれらすべてを調整します。

アモンがコメントに書いているように、

ビルドシステムをプロジェクトとは別に考えるのは適切ではないと思います。 Makefiles(または同等のもの)はコードの一部です。

10
Caleth