我试图将一个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}}列表?
我想到了以下解决方案及其后续问题:
DEFINES.txt
的外部程序读取./waf configure
并将列表写入DEFINES.txt
。该程序取代了旧的Build Target
问题:这有多安全?我是否允许通过外部程序更改.cproject
文件而不会出现任何问题?.cproject
文件中实施.cproject
更新算法
问题:这对我来说不是一个解决方案,因为其他人也使用该项目,不使用eclipse作为IDE。因此,如果其他开发人员想要构建项目,修改后的wscript
将导致错误。有没有人有更好的想法或建议?
答案 0 :(得分:1)
以下是如何解决这个问题:
此扩展点用于提供新的语言设置 供应商。语言设置提供程序用于获取添加项 编译器选项,例如包含路径(-I)或预处理器定义 (-D)和其他人进入项目模型。
CMake可以选择生成.cproject作为其配置状态的一部分,因此您可以执行类似的操作。请参阅CMake Wiki获取灵感,但摘要是您不要在源代码管理中存储和.cproject / .project,并让CMake(或您的情况下为waf)生成IDE特定文件。
您也可以使用构建输出解析器获取构建设置,并完全忽略DEFINES.txt。这需要在Eclipse中为CDT运行一次构建以查看所有命令,并要求命令在构建输出中可解析。