我在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是否提供了一个宏,告诉我何时自定义构建步骤的附加依赖项比输出更新,或者我是否在此处编写脚本区域?
答案 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似乎有一个默认规则来运行自定义构建步骤。