9

私はいくつかの検索を行い、C++ にヘッダー ファイルを含める適切な方法について同様のスレッドを見つけましたが、この質問に完全に答えたものはありませんでした。

別のフォルダーにヘッダー ファイルを含めるには、次の構文を使用するだけです。

#include "../myFolder/myFile.h"

しかし、ファイルが少し離れた別のディレクトリ構造にある場合はどうでしょうか? たとえば、次のようなものが true であることが保証されているとします。

現在のディレクトリ = / f1 / f2 / f3 / f4 / f5 / myFile.cpp

必要なヘッダー ディレクトリ = / f1 / d2 / d3 / d4 / d5 / d6 / myHeader.h

#include「追加のインクルード ディレクトリ」プロパティを設定したり、make ファイルを使用したりできることは知っていますが、ステートメントからそれを行う方法があるかどうかを知りたいです。

4

2 に答える 2

11

入れること".."は、#include一般的に醜く、維持できないと考えられています。

使用しているすべてのコヒーレント ライブラリ (ブーストなど) には、「追加のインクルード ディレクトリ」プロパティに配置する必要があるヘッダー ファイル階層の単一のルートがあります。ブーストの場合は次のようなものです

`C:/lib/boost_1_49`

boost通常、このディレクトリの下には、すべてのヘッダーが存在するディレクトリがあります。これにより、すべてのブースト ヘッダーが次の規則で始まるという規則がもたらされます。

#include <boost/bla/bla.hpp>

これは、あなたが書いているまさにそのプロジェクトにも当てはまります。ヘッダーの最適なルートを決定し、そこからすべてのインクルードを開始する必要があります。
このルールの唯一の例外は、同じディレクトリにあるヘッダーです。それらは単なるファイル名として含めることができます#include "same-dir-header.h"

""withとのインクルードも区別する必要があり<>ます。引用符はプロジェクト内のものである必要があり、山かっこは外部ライブラリである必要があります (または、OS および C ランタイム ライブラリがある場合もあります)。

于 2012-05-21T21:12:35.283 に答える
4

To complete the answer from @shoosh, you are supposed to tell your compiler where are those "other" header files. With gcc on windows, if they are in c:\path\to\library, then add the -I option

-Ic:\path\to\library

Beware of spaces in path, if the location is c:\my path\to\library, then:

-I"c:\my path\to\library"

Other compilers will provide a similar option, on command line or through the IDE.

于 2012-05-22T06:46:33.213 に答える