2017-06-25 34 views
1

我试图将一个C项目导入由waf管理的eclipse(CDT)。有一个由waf生成的预定义列表(当运行./waf configure时)。该列表必须导入到Project->Properties->C/C++ General/Paths and Symbols/Symbols/GNU C,以便索引器知道它们并且不会打印错误。该列表(使用GUI时)存储到.cproject文件中。我创建了一个构建目标,运行./waf configure并将列表存储到名为DEFINES.txt的文件中。运行构建目标后,如何自动更新.cproject的列表,其值为DEFINES.txt如何在运行构建目标之后向.cproject文件添加预定义

我想到了以下的解决方案及其后续问题:

  1. 解决方案:编写一个插件。
    问题:什么是合适的扩展点?
  2. 解决方案:编写一个调用./waf configure的外部程序读取DEFINES.txt并将列表写入.cproject。该程序取代了旧的Build Target。
    问题:这有多安全?我是否允许通过外部程序更改.cproject文件,而不会造成任何问题?
  3. 解决方案:在wscript文件中实现.cproject更新算法。
    问题:对我来说这不是一个解决方案,因为其他人也使用该项目,而不使用eclipse作为IDE。所以如果其他开发人员想要构建项目,修改后的wscript会导致错误。

有没有人有更好的想法或建议?

回答

1

这里是如何去做:

  1. 编写一个插件:我建议你做什么是写的扩展LanguageSettingsProvider。该FAQ有一些更多的信息,但总结是提供程序:

这个扩展点用于促进新的语言设置 提供商。语言设置提供程序用于在编译器选项(如包含路径(-I)或预处理器定义 (-D)等)中添加 等项目模型。

  • CMake的有一个选项,以生成.cproject作为其设定状态的一部分,所以你可以做同样的事情。请参阅CMake Wiki以获取灵感,但总结是,您不要在源代码控制中存储和.cproject/.project,并让CMake(或您的情况下的waf)生成IDE特定的文件。

  • 您也可以使用构建输出解析器来拾取构建设置,并完全忽略DEFINES.txt。这需要从Eclipse内部为CDT运行一次构建以查看所有命令,并要求命令在构建输出中可解析。

  • 相关问题