簡體   English   中英

編譯器在 C++ 中的 header 文件中找不到 header 文件

[英]Compiler cannot find header file within header file in C++

我有一個由 yaml-cpp 庫提供的 header 文件,yaml.h

yaml.h:

#include "yaml-cpp/parser.h"
#include "yaml-cpp/emitter.h"
#include "yaml-cpp/emitterstyle.h"
#include "yaml-cpp/stlemitter.h"
#include "yaml-cpp/exceptions.h"

#include "yaml-cpp/node/node.h"
#include "yaml-cpp/node/impl.h"
#include "yaml-cpp/node/convert.h"
#include "yaml-cpp/node/iterator.h"
#include "yaml-cpp/node/detail/impl.h"
#include "yaml-cpp/node/parse.h"
#include "yaml-cpp/node/emit.h"

主.cpp

#include "./lib/yaml-cpp/include/yaml.h"

int main()
{
    YAML::Node config = YAML::LoadFile("config.yaml");
    return 0;
    
}

所有 header 文件都在同一目錄(/home/user/application/libs/yaml-cpp/include)中,但編譯器無法找到 parser.h 和所有其他包含。 為什么會這樣,我該如何解決?

我試過使用g++ -I/home/user/application/libs/yaml-cpp/include main.cpp但這沒有用。

我在 linux 環境。 當 header 文件保存在 /usr/lib64 中時一切正常,但我不允許為這個項目這樣做。

當你有一個文件yaml.h ,它本身包含其他文件,如下所示:

#include "yaml-cpp/parser.h"

那么預期的目錄布局如下:

somewhere/
  |
  +-- yaml.h
  |
  +-- yaml-cpp/
        |
        +-- parser.h

您應該將-Isomewhere傳遞給您的編譯器,並在您自己的源代碼中像這樣使用 header 文件yaml.h

#include <yaml.h>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM