2010-05-06 29 views
2

在大型C++解决方案中,是否有一种最佳/标准方法来分离构建中间DLL所需的包含文件以及将由DLL客户端使用的包含文件?是否有一个在大型C++项目中组织include/exports的约定?

我们编组了一个名为Interface(对于DLL接口)文件夹中的所有包含文件,但客户必须要么包括接口文件夹的默认包含文件夹或类型的全名:

#include "ProjectName/Interface/myinterface.h" 

创建一个名为exports的单独文件夹不是更好吗?我会创建一个名为ProjectName的文件夹,并将include文件放在那里?使客户将键入:

#include "ProjectName/myinterface.h" 

如果我做的事正上方,那么我应该保持在溶液中的文件和产生后生成事件(我使用Visual Studio 2K5)将文件复制到“导出”文件夹(/ ProjectName /)?或者是它最好还是直接包括我的项目中从该文件夹中的文件(这是更直接,而且具有更少的机会,造成维护上的问题?

我比较期待的意见比一个明确的解决方案。

感谢您阅读此!

安东尼

回答

3

如果一个接口可以由一个以上的标头,

#include "ProjectName/Interface/header1.h" 

对我来说似乎更好。

+0

我有点像这样为好,但是当你共享相同的开发树,有些人可能会尝试做一些事情,如: 的#include“项目名/ notpartoftheinterface.h” ,然后你要追逐他们除去这些包括。 – BlueTrin 2010-05-06 13:41:26

+2

@BlueTrin:为什么不将公共接口文件保存在私有头文件的单独目录中? – 2010-05-06 15:15:11

+1

@BlueTrin:我在一个项目中看到的所有实现细节(cpp文件和私有头文件)位于'Interface'文件夹内的_Imp'文件夹中。你可以grep的来源和'blah'以外的所有内容不应该包含''blah/imp“...”'你也可以拿到源代码树,删除所有'_Imp'文件夹,并且你有所有的头文件把所有的私人东西都删除,我喜欢。 – sbi 2010-05-17 18:47:40