我已经做了一些搜索,并找到了在C ++中包含头文件的正确方法的类似线程,但是他们都没有回答这个问题。
我知道为了在另一个文件夹中包含头文件,您只需使用以下语法:
#include "../myFolder/myFile.h"
但是当文件在不同的目录结构中有点远时呢? 例如,如果保证满足以下内容:
当前目录= / f1 / f2 / f3 / f4 / f5 / myFile.cpp
所需的标题目录= / f1 / d2 / d3 / d4 / d5 / d6 / myHeader.h
我知道您可以设置“其他包含目录”属性或使用make文件,但我想知道是否有办法从#include
语句中执行此操作。
答案 0 :(得分:10)
将".."
放入#include
通常被认为是丑陋且无法维护的。
您正在使用的每个连贯库(例如boost)都有一个头文件层次结构根,您应将其放在“其他包含目录”属性中。对于提升,它就像是
`C:/lib/boost_1_49`
在此目录下,您通常会找到一个名为boost
的目录,其中包含所有标头。这带来了所有提升标题始于的惯例:
#include <boost/bla/bla.hpp>
这也适用于您正在编写的项目。您应该确定其标题的最佳根目录,并从那里开始所有包含
此规则的唯一例外应该是位于同一目录中的标头。这些只能作为文件名#include "same-dir-header.h"
您还应该在包含""
和<>
之间做出改变。引号应该是项目中的东西,尖括号应该是外部库(或者有些人会有它 - OS和C运行时库)
答案 1 :(得分:1)
要完成@shoosh的答案,您应该告诉编译器那些“其他”头文件在哪里。使用Windows上的gcc,如果它们位于c:\ path \ to \ library中,则添加-I选项
-Ic:\path\to\library
请注意路径中的空格,如果位置为c:\my path\to\library
,则:
-I"c:\my path\to\library"
其他编译器将在命令行或通过IDE提供类似的选项。