在源树中放置第三方头文件的位置?

时间:2016-03-08 15:16:59

标签: c++ build makefile header-files

我有一个使用第三方库的项目。我想限制在一个特定文件夹中与第三方库交互的所有代码。显然,这段代码(让我们称之为Foo)需要#include这些第三方头文件。当我构建该文件夹时,我需要将其与第三方.so文件链接。我决定将第三方内容存储在该特定文件夹的自己的include和lib目录中。像这样

fooFolder/src
fooFolder/src/Foo.cpp
fooFolder/include
fooFolder/include/Foo.h            // would have #include "ThirdParty.h"
fooFolder/include/ThirdParty.h
fooFolder/lib
fooFolder/lib/ThirdParty.so
fooFolder/Makefile

我的项目会变得很大。我有自己的中央include目录以及其他一些文件夹。

include/
include/LOTS OF FILES HERE
fooFolder/
barFolder/

现在说我Bar.cpp中有一个barFolder,它需要创建一个Foo对象。 barFolder的makefile应该只能访问中心include目录。但是,它还需要#include "Foo.h"。这有两个问题。首先,Foo.h不在中央include目录中。通过将其移动到那里可以很容易地修复它。

但第二个问题是Foo.h需要#include "ThirdParty.h"。我真的不想将ThirdParty.h放在中央包含目录中,因为它感觉很乱。我想基本上将ThirdParty的东西从项目的其余部分隔离开来。

所以现在它没有建立。谁能在这帮助我?

1 个答案:

答案 0 :(得分:0)

您可以使用已显示的结构来组织文件。在编译时,使用

-I<PROJECT_ROOT>/fooFolder/include

在命令行中。