我正在创建一个 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.
我在几个论坛上看到过这个问题,建议的解决方案是包含绝对路径(我做了)或将工作目录设置为可执行文件所在的位置。我能做些什么来让它发挥作用吗?