Scons 获取在SCON中定义的基本文件名

Scons 获取在SCON中定义的基本文件名,scons,c-preprocessor,Scons,C Preprocessor,我试图生成一个per sourcefile宏,该宏将保存源文件的基本文件名。这是为make而描述的 我试图覆盖对象生成器,但它不起作用。。。 我试着做所描述的事情 然后,替换建设者: env['BUILDERS']['_Object'] = env['BUILDERS']['Object'] env['BUILDERS']['Object'] = my_object_builder 这不管用。我得到了以下错误: AttributeError: 'function' object has no

我试图生成一个per sourcefile宏,该宏将保存源文件的基本文件名。这是为make而描述的

我试图覆盖对象生成器,但它不起作用。。。 我试着做所描述的事情

然后,替换建设者:

env['BUILDERS']['_Object'] = env['BUILDERS']['Object'] 
env['BUILDERS']['Object'] = my_object_builder
这不管用。我得到了以下错误:

AttributeError: 'function' object has no attribute 'src_suffixes'
我认为这与环境的MethodWrapper有关,但我无法验证

也许我从错误的角度出发。也许我应该更改每个源文件的环境(似乎需要做很多工作…)

主要的要求是使用将是无缝的。我不希望用户必须调用MyObjectBuilder类。此外,StaticLibrary生成器应该调用新的对象生成器

任何帮助都将不胜感激。 谢谢


没问题。

找到了。这是一条单行线

env.Append(CCFLAGS=['-D__MY_FILENAME=\\"${SOURCE.file}\\"'])
只是添加了一个基于规则的define。 引号只是一个附加项,可以打印它,而不会造成表达式的冲突

env.Append(CCFLAGS=['-D__MY_FILENAME=\\"${SOURCE.file}\\"'])