昨天下午,我在搞javascript v8的时候,发现,它是用scons构建的。
在我自己scons helloworld.c的时候,却发现有LNK1104 没法链接kernel32.lib的问题。
(注意:我的环境是winxp,visual studio 2008 express,微软的东西就是麻烦)
在网上,无论怎么找都没找着。今天早上,我看了一下scons guide,原来是一个很简单的问题,lib没找着,不过,你要会在scons中添加才行。
对于代码:
- int
- main()
- {
- printf("Hello, world!\n");
- }
int
main()
{
printf("Hello, world!\n");
}
你可以把SConstruct定义成:
- ms_libpath=[
- 'C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0A\\lib',
- 'C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\LIB']
- DefaultEnvironment(LIBPATH=ms_libpath)
- Program('helloworld.c')
ms_libpath=[
'C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0A\\lib',
'C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\LIB']
DefaultEnvironment(LIBPATH=ms_libpath)
Program('helloworld.c')
这样,就没有那个错误了。实际上,主要问题还是scons出错了,它的构建环境对象的lib不准确,win32sdk好象是在msvs/platform什么的,这不对,位置如上。
用scons构建真的很方便和容易理解。构建这样的任务对于python这样的语言非常的合适。
相应的语言应该做相应的事。不要指望用一种语言,做所有的事情(我原来曾经有这样的想法)。
scons的文档我大概的读了一下。很清晰,我相信scons在构建领域,将来会是默认的选择。
不过,对于java体系的构建不如ant,我发现它只关注与构建,而不是运行。当然了,可以多加几个关于java的builder之类的补充,这都没有问题,只是现在对于java的支持还不够强劲。
从理论上讲,scons没有做不了的事,它是python,是可运行的代码,这比ant的xml强多了,想干什么用代码直接写,不是很爽的事吗?!
[转载自]http://wenjixiao.javaeye.com/blog/236842
阅读(1024) | 评论(0) | 转发(0) |