概括:
1>Executing Lex for d:\usr\doxygen\src\code.cpp ...
1>flex: can't open ..\src\code.l
1>Project : error PRJ0019: A tool returned an error code from "Executing Lex for d:\usr\doxygen\src\code.cpp ..."
细节
我偶尔会编译 Doxygen ( http://www.doxygen.org/ ) 的源代码以从 SVN 版本发布其 Windows 二进制文件。Visual Studio C++ 2008(即版本 9)用于此目的。由于 Doxygen 源也使用 yacc 和 lex 工具,因此 cygwin bison 和 flex 在过去被成功使用。它停止工作。也就是说,flex 抱怨它找不到它的源(如上面的摘要所示)。我电脑上的 flex 版本是:
d:\>flex --version
flex 2.5.35
VS 项目winbuild\Doxygen.vcproj
配置为启动 flex,Visual Studio 显然为此目的生成了一个批处理文件。构建日志包含以下内容:
Creating temporary file "d:\usr\doxygen\winbuild\Debug\BAT00000241406084.bat" with contents
[
@echo off
flex -PcodeYY -od:\usr\doxygen\src\code.cpp ..\src\code.l
if errorlevel 1 goto VCReportError
goto VCEnd
:VCReportError
echo Project : error PRJ0019: A tool returned an error code from "Executing Lex for d:\usr\doxygen\src\code.cpp ..."
exit 1
:VCEnd
]
Creating command line "d:\usr\doxygen\winbuild\Debug\BAT00000241406084.bat"
从命令行手动尝试命令时,我确实可以观察到相同的情况:
d:\usr\doxygen\src>flex -PcodeYY -od:\usr\doxygen\src\code.cpp ..\src\code.l
flex: can't open ..\src\code.l
但是,当用code.l
普通斜杠替换路径中的反斜杠时,它可以工作:
d:\usr\doxygen\src>flex -PcodeYY -od:\usr\doxygen\src\code.cpp ../src/code.l
我不确定 flex 版本中反斜杠与斜杠的问题是否是新引入的错误/功能。有没有办法解决这个问题?