【发布时间】:2010-11-12 17:20:02
【问题描述】:
在我这里,我们有一个庞大的 C++ 代码库,我认为如何使用头文件存在问题。
有很多 Visual Studio 项目,但问题是概念上的,与 VS 无关。每个项目都是一个模块,执行特定的功能。每个项目/模块都编译为库或二进制文件。每个项目都有一个包含所有源文件的目录 - *.cpp 和 *.h。有些头文件是模块的API(我的意思是声明创建库的API的头文件子集),有些是它内部的。
现在的问题 - 当模块 A 需要与模块 B 一起工作时,A 添加 B 的源目录以包含搜索路径。因此,A 在编译时可以看到所有 B 的模块内部头文件。
作为一个副作用,开发人员不必专注于每个模块的确切 API 是什么,无论如何我认为这是一个坏习惯。
我首先考虑了一个选项。我想过在 每个项目都有一个只包含接口头文件的专用目录。希望使用该模块的客户端模块只允许包含接口目录。
这种方法可以吗?问题是如何代替你解决的?
UPD 在我之前的地方,开发是在 Linux 上使用 g++/gmake 完成的,我们确实曾经将 API 头文件安装到一个公共目录中,这是一些建议的答案。现在我们有了使用 cmake 生成项目文件的 Windows (Visual Studio)/Linux (g++) 项目。如何在 Visual Studio 中强制预安装 API 头文件?
谢谢 德米特里
【问题讨论】:
标签: c++ dependencies development-environment