强制 scons 附加后缀。
Force scons append suffix anyway.
通常scons会自动附加后缀,fx SConstruct
StaticLibrary("foo", ["t.c"])
会生成静态库 libfoo.a
或 foo.lib
或平台喜欢的任何内容,但如果库的基本名称似乎已经有扩展名,则不会发生这种情况。 fx SConstruct 文件
StaticLibrary("foo.bar", ["t.c"])
产生 libfoo.bar
(我猜它会产生 foo.bar
使用 MS 工具链)。
我想要的是使用 GNU 工具链生成 libfoo.bar.a
并使用 MS 工具链(等等)生成 foo.bar.lib
。有没有(简单的)方法可以做到这一点?
请注意,这样做是行不通的
StaticLibrary("foo.bar.a", ["t.c"])
因为它会使用 GNU 工具链生成 libfoo.bar.a
,但我猜它会使用 MS 工具链生成 foo.bar.a
(而不是我想要的 foo.bar.lib
)。
这是我现在能想到的最简单的解决方法:
env = Environment()
env['MYLIB'] = "foo.bar"
t = env.StaticLibrary('${MYLIB}', Glob('*.cpp'))
通过将库的名称定义为环境变量,可以防止生成器逻辑(suffix/src_suffix 参数)检测已经存在的扩展。在处理链的后期,目标库的名称得到完全扩展,这样正确的事情就会发生。
通常scons会自动附加后缀,fx SConstruct
StaticLibrary("foo", ["t.c"])
会生成静态库 libfoo.a
或 foo.lib
或平台喜欢的任何内容,但如果库的基本名称似乎已经有扩展名,则不会发生这种情况。 fx SConstruct 文件
StaticLibrary("foo.bar", ["t.c"])
产生 libfoo.bar
(我猜它会产生 foo.bar
使用 MS 工具链)。
我想要的是使用 GNU 工具链生成 libfoo.bar.a
并使用 MS 工具链(等等)生成 foo.bar.lib
。有没有(简单的)方法可以做到这一点?
请注意,这样做是行不通的
StaticLibrary("foo.bar.a", ["t.c"])
因为它会使用 GNU 工具链生成 libfoo.bar.a
,但我猜它会使用 MS 工具链生成 foo.bar.a
(而不是我想要的 foo.bar.lib
)。
这是我现在能想到的最简单的解决方法:
env = Environment()
env['MYLIB'] = "foo.bar"
t = env.StaticLibrary('${MYLIB}', Glob('*.cpp'))
通过将库的名称定义为环境变量,可以防止生成器逻辑(suffix/src_suffix 参数)检测已经存在的扩展。在处理链的后期,目标库的名称得到完全扩展,这样正确的事情就会发生。