如何包含不同文件夹中的不同标题?

时间:2015-12-31 11:35:25

标签: c++ organization

我有一个C ++项目,我喜欢组织的mycode,但是当我把所有内容放在不同的目录(标题和源文件保存在一起)时,我无法包含来自其他文件夹的标题。 例如:我有两个名为" FooException"和#34; ContentProvider",显然进入单独的目录,FooException是一个例外,ContentProvider是一个实用程序。当然,我将它们放在不同的文件夹中,但是当我尝试在ContenProvider中包含FooException时它不起作用并且说它无法找到源文件。有谁遇到过这样的问题?有什么建议? 在此先感谢新年快乐!

UPD: 好的,人们建议查看#include<>之间的差异和#include""而那仍然没有帮助。虽然我能够从Main.cpp访问任何文件,但无论我在ContentProvider类和FooException类中都无法访问文件,无论我使用哪种#include-statement。而且,无论我使用哪种语句,我都可以从项目的任何一点访问SFML库。是否与我项目中" include" -directory中的SFML目录有关?

UPD 2: 好的,问题解决了,它与#include<>无关和#include""。我只需要把#34; .. \"在写出路径名称之前,它工作得很漂亮。我标出了最适合的答案。

2 个答案:

答案 0 :(得分:3)

您必须在IDE / Makefile中正确配置include header paths设置。简而言之,为了能够搜索特定的头文件,编译器必须知道在哪里查找它。例如,在g++中,我们使用-I标志来提供各种包含路径。

例如,

$g++ -I/usr/abc/A/ main.cpp

在main.cpp中,包含a.h,此文件的aboslute路径为/usr/abc/A/a.h

答案 1 :(得分:0)

你可以:

  1. 添加具有所需头文件的目录,作为预处理器查找的一部分。不同的编译器有不同的方法来实现这一目标。
  2. 将头文件添加为相对路径。例如。 #include "../folderName/A.h"
  3. 合并1.和2.在搜索路径中添加顶级目录,并将文件包含为#include "topLevelDirectory/A.h"
  4. 我个人不喜欢2.因为如果您的文件层次结构发生变化,您将不得不修改源代码以更改相对路径。