gpt4 book ai didi

C++ 包找不到从包中的其他头文件调用的头位置

转载 作者:太空宇宙 更新时间:2023-11-04 12:50:38 24 4
gpt4 key购买 nike

在我开始之前,请耐心等待,我是 cpp 的新手,没有接受过正式培训,这个问题可能已经被问过并回答过,但我不确定该怎么称呼任何东西。

所以我有一个 cpp 程序,我想在其中使用这个开源 google sling 包。我在与 main.cpp 程序相同的目录中有 google sling 包,我可以包含一个 header ,其中包含相对于程序,但该 header (A) 调用包内的其他 header (B:),并且这些 header (B:) 的相对路径与该 header (A) 文件无关。这是错误堆栈:

name@name-ThinkCentre-M83:~/Desktop/c++coding_projects/test_project$ g++ -Isling main.cpp
In file included from main.cpp:7:0:
sling/frame/object.h:25:10: fatal error: sling/base/logging.h: No such file or directory
#include "sling/base/logging.h"
^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
name@name-ThinkCentre-M83:~/Desktop/c++coding_projects/test_project$ ls
bin obj test_project.cbp test_project.layout
main.cpp sling test_project.depend text_testfiles
name@name-ThinkCentre-M83:~/Desktop/c++coding_projects/test_project$ vim main.cpp
name@name-ThinkCentre-M83:~/Desktop/c++coding_projects/test_project$ cd sling/base
name@name-ThinkCentre-M83:~/Desktop/c++coding_projects/test_project/sling/base$ ls
bitcast.h flags.cc libinit.cc port.h status.cc types.h
BUILD flags.h logging.cc registry.cc status.h
clock.cc init.cc logging.h registry.h strtoint.cc
clock.h init.h macros.h slice.h strtoint.h

所以 sling/base/logging.h 实际上在那里,但是因为它是从 sling/frame/object.h 调用的,所以正确的相对路径是 ../base/logging.h(至少我有限的知识是这样告诉我的)。我想我必须对其进行设置,使其成为我的 cpp 编译器搜索依赖项的全局路径的一部分。无论哪种方式,我都做了一些非常错误的事情。

我正在寻找一个半快速修复,但我也想在将来避免这种情况,因此也非常感谢指向适当信息的链接。

编辑:也试过同样的错误:g++ -I.sling main.cppg++ -Itest_project main.cppg++ -isystem sling main.cppg++ -iwithprefixbefore "/home/.../test_project/"main.cpp 其中 ... 是从家到我的测试项目的路径

最佳答案

谢谢 melpomene,正确答案是 g++ -I. main.cpp .结案。

感谢 Jerry Jeremiah 对此信息的评论:

#include <x>说“包含来自包含路径的文件”和#include "x"说“包含当前目录中的文件”

因此,我的程序从目录“sling/frame/”(这是最初称为“sling/frame/object.h”的地方)调用头文件“sling/base/logger.h”,并为明显的原因无法在那里找到它。

关于C++ 包找不到从包中的其他头文件调用的头位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49225935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com