在github上看到一个项目,其中lib目录下的实现文件包含有另一个head文件夹下的头文件。lib文件夹和head文件夹不是同级的文件夹,head文件夹是另一个文件夹的子文件夹。但是lib文件夹里面的实现文件直接以#include "head/xx.hpp"的方式包含着头文件的。想知道为什么可以这样包含,lib下的实现文件如何能够访问到那个头文件呢?先谢谢大家了
lib
head
#include "head/xx.hpp"
认证0级讲师
今回は、gccri の -I パラメータ、たとえば、head/xxx.h の場所が /path/to/libs/head にあります。 /xxx.h、代わりに#include "head/xxx.h"、以下のパラメータを使用してください:
-I
head/xxx.h
/path/to/libs/head にあります。 /xxx.h
#include "head/xxx.h"
gcc lib/xxx.c -I/path/to/libs
man gcc如下:
man gcc
-I ディレクトリ 検索するディレクトリのリストにディレクトリ dir を追加します。 ヘッダー ファイル。 -I で指定されたディレクトリは、 標準システムにはディレクトリが含まれます。 ディレクトリ dir が 標準システム インクルード ディレクトリでは、オプションは無視されます。 システム ディレクトリのデフォルトの検索順序と、 システムヘッダーの特別な処理も負けません。 ディレクトリの場合 「=」で始まる場合、「=」は sysroot に置き換えられます。 接頭語; --sysroot と -isysroot を参照してください。
以前に省略されたパス プレフィックスを設定する構成オプションがあるはずです。プロジェクトのクローンを作成し、sublime などを使用して欠落しているパス文字をグローバルに検索すると、どこに設定されているかがわかります。 通常、プログラムを作成するとき、以前の #include は現在表示されているディレクトリには配置されません。 Linux システムには、C_INCLUDE_PATH などのいくつかのデフォルトの環境変数があり、これらのパスは、インクルード時にデフォルトで検索されるヘッダー ファイルのパスです。後で独自のパスを追加し続けることができます。 プロジェクトがどのプラットフォームで動作しているかわかりません。Android と同様に、jni をコンパイルするときに、LOCAL_C_INCLUDES を使用してヘッダー ファイルのパスを指定するだけで、長いヘッダー ファイルのパスは省略できます。コード。 Linux システム ヘッダー ファイルの検索パスなどのキーワードを検索して、関連する知識を学ぶこともできます。
#include
C_INCLUDE_PATH
今回は、gccri の
-I
パラメータ、たとえば、head/xxx.h
の場所が/path/to/libs/head にあります。 /xxx.h
、代わりに#include "head/xxx.h"
、以下のパラメータを使用してください:man gcc
如下:以前に省略されたパス プレフィックスを設定する構成オプションがあるはずです。プロジェクトのクローンを作成し、sublime などを使用して欠落しているパス文字をグローバルに検索すると、どこに設定されているかがわかります。
通常、プログラムを作成するとき、以前の
#include
は現在表示されているディレクトリには配置されません。 Linux システムには、C_INCLUDE_PATH
などのいくつかのデフォルトの環境変数があり、これらのパスは、インクルード時にデフォルトで検索されるヘッダー ファイルのパスです。後で独自のパスを追加し続けることができます。プロジェクトがどのプラットフォームで動作しているかわかりません。Android と同様に、jni をコンパイルするときに、LOCAL_C_INCLUDES を使用してヘッダー ファイルのパスを指定するだけで、長いヘッダー ファイルのパスは省略できます。コード。
Linux システム ヘッダー ファイルの検索パスなどのキーワードを検索して、関連する知識を学ぶこともできます。