【发布时间】:2018-03-11 22:46:48
【问题描述】:
在我开始之前,请多多包涵,我是 cpp 新手,没有接受过正规培训,这个问题可能已经被问过和回答过,但我不知道该怎么称呼任何东西。
所以我有一个 cpp 程序,我想在其中使用这个开源 google sling 包。我的 google sling 包与我的 main.cpp 程序位于同一目录中,我可以包含一个带有相对于路径的标题程序,但该标头(A)调用包中的其他标头(B:),并且这些标头(B:)的相对路径与该标头(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.cpp
g++ -Itest_project main.cpp
g++ -isystem sling main.cpp
g++ -iwithprefixbefore "/home/.../test_project/" main.cpp 其中 ... 是从家到我的测试项目的路径
【问题讨论】:
-
谢谢你们,正如你们所看到的,我首先使用了
g++ -Isling main.cpp,我刚刚尝试了g++ -isystem sling main.cpp并收到了同样的错误,但还有很多需要从那个来源阅读,所以我会及时通知你 -
不应该是
-I.吗? -
如
g++ -I.sling main.cpp? -
不,如
g++ -I. main.cpp(或可能g++ -Isling -I. main.cpp)。
标签: c++