如何将每个文件定义添加到scons项目中

时间:2016-11-01 22:24:30

标签: scons compiler-flags

我正在将一个makefile项目移植到scons,我无法弄清楚如何为每个文件创建一个唯一的#define。我想为每个文件定义基本文件名,以支持一些自定义调试宏。在makefile中,我可以使用以下定义执行此操作。

-DBASE_FILE_NAME=\"$(<F)\"

我不确定如何做到这一点,或者甚至可以在scons中使用,并希望得到任何反馈。

2 个答案:

答案 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)

这使我可以基于每个文件定义事物,而无需单独列出文件。