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

22

我们有一个相当大的C/C++项目,使用Scons进行构建。我想尝试通过Eclipse-CDT来构建它。有人有这方面的经验并且可以告诉我如何设置Scons作为构建器吗?(不使用SConsBuilder插件,它无法与Fedora-11中的Eclipse-CDT一起使用)。

6个回答

15

你可以使用一个Makefile将重要的目标委托给SCons

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

那么可以直接使用“标准的Make C项目”。


15

我们的一位学生为Eclipse CDT实现了一种新的SCons集成方式,它是双向的,即可以导入SCons文件并使用相应的设置填充Eclipse CDT项目,也可以从Eclipse项目设置生成SCons文件。此外,它还提供了交互式SCons模式,大大加速了较大SCons项目的增量构建。该工具将很快免费公开发布,详情请见http://sconsolidator.com


我投了赞成票,因为我使用了Sconsolidator并且它很好用。唯一的缺点是它是闭源的。除非它变成开源,否则我不认为它会被广泛使用。 - Be Kind To New Users
我尝试过使用sconsolidator,但遗憾的是它在我们的项目上无法工作。它声称在进行设置导入时出现了问题,并且控制台将会显示更多有关出错原因的信息(而控制台显示为空白)。哎,算了。 - Ted Middleton
@Ted Middleton:您是否介意打开一个问题并更详细地描述您的项目和使用的设置,以便我可以尝试重现这个问题?http://sconsolidator.com/projects/sconsolidator/issues/new - Michael Rueegg
1
@ Michael Potter。sconsolidator现在已经在Github上发布。 - mattnz
@Ted:我也遇到了同样的问题。我对我们的SConstruct进行了修改,删除了BuildIfoCollector并打印了自己的输出。BuiltInfoCollector扫描节点太慢了(我们有超过1000万个节点)。 - mattnz

12

我之前试过在Eclipse CDT中使用Waf,SCons非常相似。解决方法是创建一个空的Makefile项目,然后在选项中将“make”更改为“scons”。在Windows上,这可能需要将scons.bat文件添加到路径中。这比创建一个具有 all:\n \tscons 类型模式的虚拟Makefile好不了多少,但工作量最小。

SConsBuilder插件不是一个好主意。它里面有一堆硬编码的Python代码,输出到一个SConstruct中。它已经好久没有更新,许多代码现在可能已经在SCons中过时了。我认为比较好的方法是像SCons为Visual Studio所做的那样,或者像CMake为Eclipse CDT所做的那样。这意味着根据您的构建配置动态生成一个.cproject文件。

我曾经写过一个Waf的Eclipse项目生成器,它遍历构建节点收集源文件并生成.project和.cproject文件。类似于CMake的方式,但是Waf的默认行为是创建一个变量目录,这意味着您不必处理源外构建的问题。这已经作为waf本身的附加功能添加了进去。它仅使用Waf API的一部分,因此有可能通过一些较小的工作将其转换为SCons。换句话说,没有太多可用的东西。.cproject格式在任何地方都没有真正记录,并且与Java版本相比非常丑陋。

我与CDT相处不太好 - 它在Java开发工具之后很长一段时间了 - 我仍然使用Vim和:make,所以最终这有点像纯理论。


4

只需更改生成器设置,无需插件。选择外部生成器并将scons设置为make,并将工作目录设置为放置SConstruct的目录。

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


1

0
非常非常小心使用Sconsolidator与现有项目!!当您单击链接将SCons性质添加到项目时,它将盲目地覆盖您在项目根目录中拥有的任何现有SConstruct / SConscript文件。 (我正在尝试向该项目报告此问题,但迄今为止一直被阻止。)

您应该能够在这里报告问题:http://sconsolidator.com/projects/sconsolidator/issues - Be Kind To New Users

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接