検索

ホームページ  >  に質問  >  本文

c++ - 库里面实现文件与头文件的问题

在github上看到一个项目,其中lib目录下的实现文件包含有另一个head文件夹下的头文件。lib文件夹和head文件夹不是同级的文件夹,head文件夹是另一个文件夹的子文件夹。但是lib文件夹里面的实现文件直接以#include "head/xx.hpp"的方式包含着头文件的。想知道为什么可以这样包含,lib下的实现文件如何能够访问到那个头文件呢?
先谢谢大家了

PHP中文网PHP中文网2882日前580

全員に返信(2)返信します

  • 怪我咯

    怪我咯2017-04-17 14:46:52

    今回は、gccri の -I パラメータ、たとえば、head/xxx.h の場所が /path/to/libs/head にあります。 /xxx.h、代わりに#include "head/xxx.h"、以下のパラメータを使用してください:

    gcc lib/xxx.c -I/path/to/libs

    man gcc如下:

    -I ディレクトリ
         検索するディレクトリのリストにディレクトリ dir を追加します。
         ヘッダー ファイル。  -I で指定されたディレクトリは、
         標準システムにはディレクトリが含まれます。  ディレクトリ dir が
         標準システム インクルード ディレクトリでは、オプションは無視されます。
         システム ディレクトリのデフォルトの検索順序と、
         システムヘッダーの特別な処理も負けません。  ディレクトリの場合
         「=」で始まる場合、「=」は sysroot に置き換えられます。
         接頭語; --sysroot と -isysroot を参照してください。

    返事
    0
  • ringa_lee

    ringa_lee2017-04-17 14:46:52

    以前に省略されたパス プレフィックスを設定する構成オプションがあるはずです。プロジェクトのクローンを作成し、sublime などを使用して欠落しているパス文字をグローバルに検索すると、どこに設定されているかがわかります。
    通常、プログラムを作成するとき、以前の #include は現在表示されているディレクトリには配置されません。 Linux システムには、C_INCLUDE_PATH などのいくつかのデフォルトの環境変数があり、これらのパスは、インクルード時にデフォルトで検索されるヘッダー ファイルのパスです。後で独自のパスを追加し続けることができます。
    プロジェクトがどのプラットフォームで動作しているかわかりません。Android と同様に、jni をコンパイルするときに、LOCAL_C_INCLUDES を使用してヘッダー ファイルのパスを指定するだけで、長いヘッダー ファイルのパスは省略できます。コード。
    Linux システム ヘッダー ファイルの検索パスなどのキーワードを検索して、関連する知識を学ぶこともできます。

    返事
    0
  • キャンセル返事