当依赖项更改时,Visual Studio会运行自定义生成工具

时间:2016-01-19 18:35:55

标签: visual-studio-2013 msbuild swig

我在Visual Studio 2013中有两个C ++项目的解决方案。

Project A创建一个静态库。项目B为A生成SWIG生成的DLL包装器,链接由A生成的lib。复杂因素是B使用"自定义生成步骤"生成代码,设置为在ClCompile之前执行。自定义构建步骤调用外部工具以基于项目A中的头文件中定义的类生成包装器代码。如果生成成功完成,项目B从生成的代码构建DLL,链接到项目A中生成的.lib

我遇到的问题是B中的自定义步骤发生在每个构建上(正如人们所期望的那样),但我想在A中的头文件发生更改时实现它。我可以&# 39;看到一种定义强制执行这种情况的规则的方法。如果我添加" .. \ project A * .h"在自定义构建步骤的附加依赖项字段中,缺少的链接将是一个宏,当附加依赖项中的任何文件比输出字段中的任何文件更新时,该宏的计算结果为真。

Visual Studio是否提供了一个宏,告诉我何时自定义构建步骤的附加依赖项比输出更新,或者我是否在此处编写脚本区域?

1 个答案:

答案 0 :(得分:1)

我使用类似于此的自定义构建:

<CustomBuild>
  <Command>swig -c++ -python -I..\include -outdir $(OutDir) %(Identity)</Command>
  <Message>Creating SWIG-generated files...</Message>
  <Outputs>$(ProjectName)_wrap.cxx;$(Outdir)$(ProjectName).py</Outputs>
  <AdditionalInputs>header1.h;header2.h;header3.h</AdditionalInputs>
</CustomBuild>

我没有使用任何其他内容,因此如果AdditionalInputs中的文件比输出更新,Visual Studio似乎有一个默认规则来运行自定义构建步骤。