是否可以更改对中间构建器的调用,例如通过传递目标前缀,以避免环境冲突?
例如,假设您想使用两个不同的库使用不同的编译器宏的源文件,如下所示:
env.Library('libraryA', 'source.c', CCFLAGS=['-DCONFIG_X'])
env.Library('libraryB', 'source.c', CCFLAGS=['-DCONFIG_Y'])
SCons 检测到冲突,因为 Library-Builder 调用 Object-Builder 以首先使用不同的 CCFlags 编译源文件。
显而易见的解决方案是将编译与链接分开,如下所示:
objectA = env.Object('objectA', 'source.c', CCFLAGS=['-DCONFIG_X'])
objectB = env.Object('objectB', 'source.c', CCFLAGS=['-DCONFIG_y'])
env.Library('libraryA', objectA)
env.Library('libraryB', objectB)
我想知道是否有更优雅的方法,如果有多个文件用作源,这将特别有用。
谢谢!