如何在运行构建目标后将预定义项添加到.cproject文件中

时间:2017-06-25 18:51:39

标签: eclipse eclipse-cdt waf

我试图将一个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的{​​{1}}列表?

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

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

1 个答案:

答案 0 :(得分:1)

以下是如何解决这个问题:

  1. 编写插件:我建议你做的是写LanguageSettingsProvider的扩展名。 FAQ有更多信息,但摘要是提供商执行的操作:
  2.   

    此扩展点用于提供新的语言设置   供应商。语言设置提供程序用于获取添加项   编译器选项,例如包含路径(-I)或预处理器定义   (-D)和其他人进入项目模型。

    1. CMake可以选择生成.cproject作为其配置状态的一部分,因此您可以执行类似的操作。请参阅CMake Wiki获取灵感,但摘要是您不要在源代码管理中存储和.cproject / .project,并让CMake(或您的情况下为waf)生成IDE特定文件。

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