1

概括:

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 版本中反斜杠与斜杠的问题是否是新引入的错误/功能。有没有办法解决这个问题?

4

1 回答 1

0

我更加努力地找到了原因。cygwin过去实际上对我有用。它仍然适用于反斜杠——它只显示一个关于更好地使用 POSIX 路径的警告。

原因是,我安装了更多工具,带来了更多flex.exe实用程序。第一个是msysGit安装的一部分,第二个来自Ruby Development Kit。它们都不支持路径中的反冲。重命名后,Doxygen 再次开始编译。

事实上,GnuWin 在flex.exe没有任何警告的情况下使用反斜杠——我现在更喜欢它。

于 2013-04-11T08:30:12.683 回答