【发布时间】:2014-04-19 06:56:44
【问题描述】:
在尝试使用 scons 编译 this program 时,我们遇到了这个错误
build/opt/zsim_harness.cpp:315:5: error: stray '\' in program
build/opt/zsim_harness.cpp:315:5: error: stray '#' in program
build/opt/zsim_harness.cpp: In function 'int main(int, char**)':
build/opt/zsim_harness.cpp:310:24: error: 'ZSIM_BUILDVERSION' was not declared in this scope
build/opt/zsim_harness.cpp:315:5: error: expected ')' before 'n'
build/opt/zsim_harness.cpp:315:5: error: 'ZSIM_BUILDVERSION' was not declared in this scope
出现此错误的行是
info("Starting zsim, built %s (rev %s)", ZSIM_BUILDDATE, ZSIM_BUILDVERSION);
ZSIM_BUILDVERSION是在SConstruct中定义的宏
if os.path.exists(".git"):
env.Command(versionFile, allSrcs + [".git/index", "SConstruct"],
'echo "#define ZSIM_BUILDDATE \\""`date`\\""\\\\n#define ZSIM_BUILDVERSION \\""`python misc/gitver.py`\\""" >>' + versionFile)
else:
env.Command(versionFile, allSrcs + ["SConstruct"],
'echo "#define ZSIM_BUILDDATE \\""`date`\\""\\\\n#define ZSIM_BUILDVERSION \\""no git repo\\""" >>' + versionFile)
scons 版本是 2.1.0 有什么办法解决这个问题吗?
更新:
看来scons会生成一个文件version.h,看起来像
#define ZSIM_BUILDDATE "Sat Apr 19 11:07:38 CET 2014"\n#define ZSIM_BUILDVERSION "master:10:a8c417b:1fc 1+ 1- 6b4f4490"
【问题讨论】:
-
您没有显示宏定义,您正在显示一些可能会生成一个的 Python 代码。该代码的输出在哪里?
-
把两个宏分成两行怎么样?
-
这是故意的吗?
-
@Dieter Lücking:我不知道。
-
@Steve:'\n' 应该分隔两个宏。不是吗?