我正在创建一个visual studio解决方案来包装OCaml的命令行部分。在标准的OCaml make文件中,有以下目标:
version.h : ../VERSION
echo "#define OCAML_VERSION \"`sed -e 1q ../VERSION`\"" > version.h
我希望通过自定义构建事件进行模拟。我修改了我的vcproj文件以包含以下行:
<CustomBuildStep>
<Command>C:\Windows\System32\sed.exe -e "1 s/^/#define OCAML_VERSION " "$(SourceDir)VERSION" > "$(SourceDir)version.h"
</Command>
<Inputs>VERSION</Inputs>
<Outputs>version.h;%(Outputs)</Outputs>
<Message>Building version header file ....</Message>
</CustomBuildStep>
我确实在我的系统上安装了sed(来自unxutils),命令在命令终端上正常工作(自然地在宏扩展之后)。但是,当我从Visual Studio内部执行它时,我收到以下错误消息:
CustomBuildStep:
Description: Building version header file ....
'C:\Windows\System32\sed.exe' is not recognized as an internal or external command,
operable program or batch file.
我在几个论坛上看到过这个问题,建议的解决方案是包含绝对路径(我做过)或将工作目录设置为可执行文件所在的位置。有什么办法可以让它发挥作用吗?