我正在将一个makefile项目移植到scons,我无法弄清楚如何为每个文件创建一个唯一的#define。我想为每个文件定义基本文件名,以支持一些自定义调试宏。在makefile中,我可以使用以下定义执行此操作。
-DBASE_FILE_NAME=\"$(<F)\"
我不确定如何做到这一点,或者甚至可以在scons中使用,并希望得到任何反馈。
答案 0 :(得分:0)
也许以下情况? (没试过,但沿着这些方向应该有用)
env.Program('filename.c',CPPDEFINES='-DBASE_FILE_NAME=\"$SOURCE\"')
答案 1 :(得分:0)
经过一些实验,以下似乎有效。
import os
from glob import glob
# use Python glob, not scons Glob!
CPP_FILES = glob('./src/*.cpp')
env = Environment(CPPPATH='./include', etc...)
for f in CPP_FILES:
env.Object(f, CPPDEFINES={'BASE_FILENAME' : "\\\"" + os.path.basename(f) + "\\\""})
O_FILES = [os.path.splitext(f)[0] + '.o' for f in CPP_FILES]
env.Program('myprogram', O_FILES)
这使我可以基于每个文件定义事物,而无需单独列出文件。