使用Unix
对C ++中的单独目录感到困惑#include
答案 0 :(得分:1)
您的问题部分为answered here,我们假设您正在使用GCC(Visual Studio的相同比较):
#include <file>
此变体用于系统头文件。它在标准的系统目录列表中搜索名为file的文件。您可以使用-I
选项将目录添加到此列表中(请参阅调用)。#include "file"
此变体用于您自己的程序的头文件。它首先在包含当前文件的目录中搜索名为file的文件,然后在引用目录中搜索,然后搜索用于<file>
的相同目录。您可以使用-iquote
选项将目录添加到引用目录列表中。
因此,当您想要使用geometry.h
加入#include <>
时,您只需要使用其他gcc
参数调用-I
,您只需要决定“ deep “你想去吗:
gcc -I #include
/abs/path/ws/B/inc/Normal <geometry.h>
/abs/path/ws/B/inc <Normal/geometry.h>
/abs/path/ws/B <inc/Normal/geometry.h>
/abs/path/ws <B/inc/Normal/geometry.h>
/abs/path <ws/B/inc/Normal/geometry.h>
如果你想使用#include ""
,你也可以这样做:
让我们假设您在/abs/path/ws/A/inc/your_header.h
并希望加入/abs/path/ws/B/inc/Normal/geometry.h
:
#include path
"geometry.h" /abs/path/ws/A/inc/geometry.h
"../geometry.h" /abs/path/ws/A/geometry.h
"../../geometry.h" /abs/path/ws/geometry.h
"../../B/geometry.h" /abs/path/ws/B/geometry.h
"../../B/inc/geometry.h" /abs/path/ws/B/inc/geometry.h
"../../B/inc/Normal/geometry.h" /abs/path/ws/B/inc/Normal/geometry.h
如果这不起作用,您可能在不同的文件夹中,或者在某处有错字。
我个人会选择第一个解决方案(您可能希望以后在系统范围内使用您的库),这样您只需在makefile中更改一个-I
标头而不编辑源代码。)
答案 1 :(得分:-1)
因为“PP / linear.h”被认为意味着我们在“ws / A / me / inc”所以...我们用../去“我”我们去“A”与../../ ..我们去“ws”然后“../../../B/inc/Normal/geometry.h”应该把我们带到理想的位置。