Scons 将SCON与Keil编译器/链接器一起使用

Scons 将SCON与Keil编译器/链接器一起使用,scons,keil,Scons,Keil,我试图将Keil C51编译器与SCON一起用作构建系统 最后一个问题是如何将$SOURCES以逗号分隔输出到链接器。默认值使用空格作为分隔符 SConstruct的相关部分如下所示: path = ['C:\Keil\C51\BIN'] env = Environment(ENV = {'PATH' : path}) #Compiler settings env['CC'] = 'c51.exe' env['CCCOM'] = '$CC $SOURCES $_CPPI

我试图将Keil C51编译器与SCON一起用作构建系统

最后一个问题是如何将
$SOURCES
以逗号分隔输出到链接器。默认值使用空格作为分隔符

SConstruct的相关部分如下所示:

path = ['C:\Keil\C51\BIN']
env = Environment(ENV = {'PATH' : path})

#Compiler settings
env['CC']        = 'c51.exe' 
env['CCCOM']     = '$CC $SOURCES $_CPPINCFLAGS $CFLAGS  $_CCCOMCOM ' #-o $TARGET 
env['INCPREFIX']  = 'INCDIR('
env['INCSUFFIX']  = ')'

# Linker settings
env.Replace(LINK='BL51.exe')
env['LINKCOM']     = '$LINK $SOURCES TO $TARGET $LINKFLAGS $__RPATH $_LIBDIRFLAGS $_LIBFLAGS'
有了这个,我得到了:

BL51.exe driver.obj flash.obj initialization.obj power.obj TO Outfile.omf

我想要的是:

BL51.exe driver.obj、flash.obj、initialization.obj、power.obj到Outfile.omf

是一个构造变量,我找不到如何更改它打印到命令行的方式


有人吗?

我用以下方法解决了这个问题:

    env['LINKCOM']     = '$LINK ",".join( $SOURCES ) TO $TARGET $LINKFLAGS $__RPATH $_LIBDIRFLAGS $_LIBFLAGS'

我不认为有一种标准的方法可以在没有创建自己的构建器的情况下在SCons中实现这一点。它在哪里连接?它是作为列表隐式的还是在SCON中完成的?Python列表分隔符(查找string.join(listVar)函数)很容易更改。考虑到大多数C/C++编译器期望文件之间有一个空格,它可能在内部由SCON连接。不幸的是,您可能必须编写自己的生成器。