如何使用 Eclipse CDT 构建 SCons 项目?

Posted

技术标签:

【中文标题】如何使用 Eclipse CDT 构建 SCons 项目?【英文标题】:How to build SCons projects with Eclipse CDT? 【发布时间】:2010-11-06 08:51:19 【问题描述】:

我们有一个相当大的 C/C++ 项目,使用 scons 进行构建。我想尝试通过 Eclipse-CDT 来构建它。任何人都有这方面的经验,可以告诉我将 scons 设置为 builder 的步骤。 (不使用 SConsBuilder 插件,它不适用于 Fedora-11 的 Eclipse-CDT)。

【问题讨论】:

【参考方案1】:

您可以使用 Makefile 将重要目标简单地委托给 scons

.PHONY: all clean install
default:    all
all:    
    scons
clean:
    scons -c
install:
    scons install

那么就可以开箱即用地使用“Standard Make C Project”了。

【讨论】:

【参考方案2】:

我们的一个学生为 Eclipse CDT 实现了一个新的 SCons 集成,它可以双向工作,即它可以导入 SCons 文件并使用相应的设置填充 Eclipse CDT 项目,它可以从 Eclipse 项目设置生成 SCons 文件。此外,它还提供了一种交互式 SCons 模式,可以显着加快大型 SCons 项目的增量构建。即将免费向公众发布,见http://sconsolidator.com

【讨论】:

我投了赞成票,因为我使用了 sconsolidator 并且它有效。唯一需要注意的是它是封闭源代码。除非它是开源的,否则我认为它不会得到广泛使用。 我尝试了 sconsolidator,可惜,它不适用于我们的项目。它声称进行设置导入时出现问题,并且控制台将有更多关于出错的信息(并且控制台显示为空)。哦,好吧。 @Ted Middleton:您介意打开一个问题并更详细地描述您的项目和使用的设置,以便我可以尝试重现该问题吗? sconsolidator.com/projects/sconsolidator/issues/new @迈克尔·波特。 sconsolidator 现在可以在 Github 上使用。 @Ted:我遇到了同样的问题。我破解了我们的 SConstruct 以删除 BuildIfoCollector 并打印它自己的输出。 BuiltInfoCollector 扫描节点太慢(我们有超过 1000 万个节点)。【参考方案3】:

我之前尝试过Waf in Eclipse CDT,SCons 会非常相似。解决方案是创建一个空的 Makefile 项目,然后简单地将选项中的“make”更改为“scons”。在可能需要路径中的 scons.bat 文件的 Windows 上。这并不比创建一个包含 all:\n\tscons 类型模式的虚拟 Makefile 好多少,但工作量最少。

SConsBuilder plugin 不是一个好主意。它有一大堆硬编码的 python 代码,它会输出到 SConstruct。它已经很久没有更新过了,现在 SCons 中可能已经弃用了很多代码。我认为更好的方法是做 SCons 为 Visual Studio 做的事情,或者 CMake 为 Eclipse CDT 做的事情。这意味着根据您的构建配置动态生成 .cproject 文件。

我曾经写过一个Eclipse project generator for Waf,它遍历构建节点收集源文件并输出一个.project 和.cproject 文件。与 CMake 的做法类似,但 Waf 创建变体目录的默认行为意味着您不必处理源外构建问题。这已被添加为extra in waf itself。它仅使用 Waf API 的一部分,因此可以通过少量工作将其转换为 SCons。换句话说,那里没有什么东西。 .cproject 格式在任何地方都没有真正的文档记录,并且与 Java 版本相比确实很难看。

不过,我在 CDT 上的表现并不好——它远远落后于 Java 开发工具——而且我仍然使用 Vim 和 :make,所以最后这一切都有点学术性。

【讨论】:

【参考方案4】:

只需更改构建器设置,无需插件。选择外部构建器并设置 scons 而不是 make 并将 workdir 设置为 SConstruct 放置的目录。

现在,您可以使用 make targets 视图来创建 scons 构建命令并像 make 命令一样执行它。默认情况下,带有 scons 的错误解析器可以正常工作,无需额外配置。

【讨论】:

【参考方案5】:

http://sconsolidator.com/ Sconsolidator 应该可以工作。

【讨论】:

【参考方案6】:

在现有项目中使用 Sconsolidator 时要非常小心!!当您单击链接以将 SCons 性质添加到您的项目时,它将盲目地覆盖您在项目根目录中拥有的任何现有 SConstruct/SConscript 文件。 (我正试图将此作为一个错误报告给项目,但到目前为止一直被阻止。)

【讨论】:

您应该可以在这里报告您的问题:sconsolidator.com/projects/sconsolidator/issues

以上是关于如何使用 Eclipse CDT 构建 SCons 项目?的主要内容,如果未能解决你的问题,请参考以下文章

在 c++ Eclipse CDT 中使用不同的值构建

Eclipse CDT 无头构建问题

从 Eclipse CDT 项目中完全排除某些目录

eclipse c/c++ CDT 只构建一个文件

如何在 Eclipse CDT 的共享库项目中使用静态库

默认构建设置 Eclipse CDT