如何通过批处理文件调用自定义生成工具

时间:2017-11-01 01:02:53

标签: visual-studio batch-file

在尝试将Cap'n Proto编译器设置为Visual Studio 2017中的自定义构建工具时,我遇到了一种奇怪的行为,它似乎只在直接调用时才起作用,而不是通过批处理文件。

我首先尝试的是,对于每个.capnp文件,设置以下自定义构建工具设置:

public class Skill {
    private Calculator calc;
    public Skill(Calculator calc) { this.calc = calc; }
}

public class Calculator {
    private Skill sk = new Skill(this);
}

我制作了批处理文件,因为我想避免使用capnp文件夹污染我的%PATH%,这是它包含的内容:

Command line: "$(SolutionDir)run_capnpn.bat" compile -oc++ "%(FullPath)"
Description: Executing capnp.exe on %(Identity)...
Outputs: %(Identity).c++;%(Identity).h

但是,通过此设置,我的解决方案中只有5个capnp文件中的1个调用了自定义构建工具(所有5个文件具有完全相同的设置)。我知道这是因为只出现了一对生成的文件,我的构建日志中只出现了一条消息。

即使更奇怪,如果我再次编译它将执行下一个文件,并在下面的编译它将执行另一个文件。总之,它需要5个编译(每个文件一个),然后才考虑完全构建所有内容并停止调用自定义构建工具。

经过多次试验和错误以及Discord上其他程序员的一些帮助,我尝试将capnp.exe添加到我的路径并直接调用它(而不是通过批处理文件)所以对于每个capnp fil我更改了命令行设置到:

@echo on
echo %*
SET PATH=%PATH%;C:\GitHub\capnproto\bin\c++\src\capnp\Debug
start /wait "" capnp.exe %*
exit /b %errorlevel%

现在一切都正确构建。是否可以通过批处理文件调用自定义构建工具?如果是这样的话?

0 个答案:

没有答案