Eclipse CDT:在一个代码库中管理条件编译(#ifdef)

时间:2014-11-20 21:35:19

标签: eclipse-cdt conditional-compilation

我在一个非常大的代码库中工作,该代码库具有条件编译标志,用于为几个不同的嵌入式硬件平台构建代码。代码的很大一部分是常见的,并且有一个硬件适配层,应该是h / w独立的,但也有许多通用代码,其函数调用包含在#ifdef #else中的特定硬件函数用于条件编译。不幸的是,这种范式强加于我们如何在多个团队中工作,所以我需要使用它,即没有选择转移到真正的硬件独立文件。我开发并调试了所有3个(到目前为止)这些平台,并且不断添加/删除我的符号中的编译器标志,并在每次需要从一个平台开发/调试问题的上下文切换时重新构建我的CDT索引到另一个。即使使用积极的资源过滤,重建索引也可能需要很长时间(最多一个小时)。

我们使用Perforce作为我们的CVS,并且我希望在单个Perforce工作区中工作,因此我不会与检出哪些文件不同步。我尝试为每种类型的平台创建单独的Eclipse项目,但是我收到一条错误消息,表明资源(Perforce工作区代码)已被另一个项目使用。

有人有任何建议吗?

我正在使用带有CDT的Eclipse Luna。

由于

1 个答案:

答案 0 :(得分:0)

对于您提到需要删除和添加符号并更改项目属性中的构建选项的部分,这就是配置的用途。假设设置对于给定配置(特定硬件平台)非常静态,请定义配置列表,每个平台一个,并根据相关平台设置选项。这样,只需更改配置即可更改构建选项集。

对于特定于文件的设置也是如此,例如"从build"中排除。您可以为每个平台构建不同的文件集。

我不知道每次切换配置时Eclipse是否会重新编制索引。