Sconscript添加.lib文件的问题

15 views
Skip to first unread message

k0bec...@gmail.com

unread,
Aug 10, 2014, 2:58:31 AM8/10/14
to rt-threa...@googlegroups.com
在尝试利用Sconscript管理工程文件时,Sconscript内容如下:

Import('RTT_ROOT')
Import('rtconfig')
from building import *

cwd    
= os.path.join(str(Dir('#')), 'STemWinLibrary522')
src    
= Split('''
Config\GUIConf.c
Config\LCDConf_FlexColor_Template.c
OS\GUI_X.c
'''
)
#此处标记
src
+= ['Lib\STemWin522_CM3_Keil.lib']

CPPPATH
= [cwd + '/inc', cwd + '/Config']

group = DefineGroup('STemwin', src, depend = [''], CPPPATH = CPPPATH)

Return('group')

把标记处的内容删除后能正常重建工程,不删除重建失败,并且提示如下图:

想请教下各位大神,这是说不能利用Sconscript的方式添加.lib文件么?

Grissiom

unread,
Aug 10, 2014, 3:36:15 AM8/10/14
to rt-threa...@googlegroups.com
On Sun, Aug 10, 2014 at 2:58 PM, <k0bec...@gmail.com> wrote:
在尝试利用Sconscript管理工程文件时,Sconscript内容如下:

Import('RTT_ROOT')
Import('rtconfig')
from building import *

cwd    
= os.path.join(str(Dir('#')), 'STemWinLibrary522')
src    
= Split('''
Config\GUIConf.c
Config\LCDConf_FlexColor_Template.c
OS\GUI_X.c
'''
)
#此处标记
src
+= ['Lib\STemWin522_CM3_Keil.lib']

CPPPATH
= [cwd + '/inc', cwd + '/Config']

group = DefineGroup('STemwin', src, depend = [''], CPPPATH = CPPPATH)

Return('group')


src 里面的东西应该是源文件,而不是库。库指定的话需要在 DefineGroup 的参数里加上 LIBS=['libname.lib']

--
Cheers,
Grissiom

k0bec...@gmail.com

unread,
Aug 10, 2014, 4:52:20 AM8/10/14
to rt-threa...@googlegroups.com
刚试了下把下面这句:

group = DefineGroup('STemwin', src, depend = [''], CPPPATH = CPPPATH)

修改成:

group = DefineGroup('STemwin', src, depend = [''], CPPPATH = CPPPATH, LIBS = ['Lib/STemWin522_CM3_Keil.lib'])

出现如下错误提示:


又类比地添加了如下语句:

libpath = [cwd + '/Lib']

并且把DefineGroup函数改成如下形式:

group = DefineGroup('STemwin', src, depend = [''], CPPPATH = CPPPATH, LIBS = ['Lib/STemWin522_CM3_Keil.lib'], LIBPATH = libpath)

这之后运行“scons --target=mdk -s”后能正常生成工程,但是工程里依然没有要添加的库文件“STemWin522_CM3_Keil.lib”,还是整不太明白,高手能不能讲地再具体点呢?Orz

在 2014年8月10日星期日UTC+8下午3时36分15秒,grissiom写道:

Grissiom

unread,
Aug 10, 2014, 5:01:31 AM8/10/14
to rt-threa...@googlegroups.com
2014-08-10 16:52 GMT+08:00 <k0bec...@gmail.com>:
刚试了下把下面这句:

group = DefineGroup('STemwin', src, depend = [''], CPPPATH = CPPPATH)

修改成:

group = DefineGroup('STemwin', src, depend = [''], CPPPATH = CPPPATH, LIBS = ['Lib/STemWin522_CM3_Keil.lib'])

出现如下错误提示:



出现啥提示?

--
Cheers,
Grissiom

k0bec...@gmail.com

unread,
Aug 10, 2014, 5:22:31 AM8/10/14
to rt-threa...@googlegroups.com

莫名出现乱码。。。
以下接上:
出现如下提示:

又类比添加了如下语句:

libpath = [cwd + '/Lib']

并把DefineGroup修改成如下内容:

group = DefineGroup('STemwin', src, depend = [''], CPPPATH = CPPPATH, LIBS = ['Lib/STemWin522_CM3_Keil.lib'], LIBPATH = libpath)

再次运行“scons --target=mdk -s”命令后,重建工程正常,但是keil工程里面依然没有“STemWin522_CM3_Keil.lib”文件,所以还是得请教下,哪里操作的不对?



在 2014年8月10日星期日UTC+8下午5时01分31秒,grissiom写道:

Grissiom

unread,
Aug 10, 2014, 5:26:42 AM8/10/14
to rt-threa...@googlegroups.com
2014-08-10 17:22 GMT+08:00 <k0bec...@gmail.com>:

莫名出现乱码。。。
以下接上:
出现如下提示:

又类比添加了如下语句:

libpath = [cwd + '/Lib']

并把DefineGroup修改成如下内容:

group = DefineGroup('STemwin', src, depend = [''], CPPPATH = CPPPATH, LIBS = ['Lib/STemWin522_CM3_Keil.lib'], LIBPATH = libpath)

再次运行“scons --target=mdk -s”命令后,重建工程正常,但是keil工程里面依然没有“STemWin522_CM3_Keil.lib”文件,所以还是得请教下,哪里操作的不对?



嗯,如果要是 LIBPATH 指向了 lib/ 的话,那么库的名字里就不需要在以 lib/ 为开头了~ 如果要是直接用 Scons 编译的话应该是这样的,不知道生成工程的话这么指定会不会有问题……

--
Cheers,
Grissiom

k0bec...@gmail.com

unread,
Aug 10, 2014, 7:25:38 AM8/10/14
to rt-threa...@googlegroups.com
刚刚把“Lib/”去掉试了下,如你所说,“scons -j4”编译没有错误,但生成的工程里面依然没有库文件。没有解决方法么?

在 2014年8月10日星期日UTC+8下午5时26分42秒,grissiom写道:

k0bec...@gmail.com

unread,
Aug 11, 2014, 10:29:29 AM8/11/14
to rt-threa...@googlegroups.com
经过bernard兄的提点,原来是

LIBS = ['STemWin522_CM3_Keil']

而不是

LIBS = ['STemWin522_CM3_Keil.lib']

前面不能有,后面也不能有啊。。。

PS:这样生成的keil工程下面会有两个同名的文件夹,一个里面放的是.c等源代码文件,另一个里面放的是.lib文件,并且再加入一个库的话还会再生成一个同名的文件夹,据此推断这种方式应该是会把库文件单独的放置在一个同名目录下,稍微美中不足了点(同名的竟然不归到一起,看着怪啊)

在 2014年8月10日星期日UTC+8下午5时26分42秒,grissiom写道:
Reply all
Reply to author
Forward
0 new messages