在Windows

时间:2016-12-07 08:46:28

标签: windows eclipse eclipse-cdt

在使用Eclipse / CDT进行包含许多源文件的项目的C / C ++构建期间,我遇到了一个问题 - 在链接阶段,创建了一个非常长的命令行,然后将其传递给CreateProcess Windows API函数。此命令的格式为:{compiler} {flags} path/to/file1.o path/to/file2.o path/to/file3.o [...],基本上包含编译期间创建的所有目标文件,在我的情况下,长度超过34K字符。

现在历史上已经看过这个问题,但在我看来,这个问题只是提升到了更高的角色限制。特别是,当查看here时,提到了8192字符限制的问题,这似乎是命令直接传递给命令行的情况。尝试修复它的更改是使用CreateProcess WINAPI函数,它具有32767个字符的更高限制(限制取决于所使用的Windows版本)。在我正在使用的项目中,两个限制都不够高,因为我已经为该特定命令达到了超过34K字符。

我已经提到了GNU ARM Elipse,因为这是我正在使用的,但这是CDT本身的一个普遍问题,它似乎也是其他IDE中的一个问题 - 例如我读过同样的问题来自Netbeans用户的报告。因为我使用嵌入式系统并且已经有与Eclipse集成的工具,所以不能选择移动到另一个IDE。

至于实际解决方案 - 对我来说理想的情况是让对象文件列表通过临时文件传递,因为字符限制完全被这种方式绕过。到目前为止,我正在使用CTD的makefile生成器,因为它与IDE本身集成(标志,构建排除等),但它不能以任何方式配置,或者至少没有我能够解决的问题可以解决我的问题。问题。

我有什么选择?如果有必要,我可以查看makefile生成器本身并修改它以输出到文件,但是如果它不是最后一个可能的选项,我宁愿避免这样做。

0 个答案:

没有答案