VS 2015“;构建依赖项->;“构建定制”;总是触发预构建和后构建 我有一个VS 2015 C++项目,既有预构建又有后生成步骤。p>
此外,我还通过“构建依赖项->构建自定义”将自定义目标添加到项目中。自定义目标运行一个Perl脚本,该脚本使用“英特尔编译器”运行nmake生成文件。自定义目标始终运行。具体地说,在nmake检查更改并防止在输入文件未更改时生成时,Perl脚本始终运行。 调用自定义目标会导致预构建和后构建运行,即使自定义目标没有生成新的输出(它运行,但只执行检查) 如果我的自定义目标没有生成任何新的输出,我希望阻止预构建和后构建运行。到目前为止,我还没有找到一种方法 另一个选项是,如果源未更改,则阻止自定义目标运行。不幸的是,“英特尔编译器”生成的文件被标记为“从生成中排除”,因此不会触发自定义目标。我试图为自定义目标运行的任务定义输入和输出,但没有成功VS 2015“;构建依赖项->;“构建定制”;总是触发预构建和后构建 我有一个VS 2015 C++项目,既有预构建又有后生成步骤。p>,c++,visual-studio-2015,post-build-event,nmake,custom-build-step,C++,Visual Studio 2015,Post Build Event,Nmake,Custom Build Step,此外,我还通过“构建依赖项->构建自定义”将自定义目标添加到项目中。自定义目标运行一个Perl脚本,该脚本使用“英特尔编译器”运行nmake生成文件。自定义目标始终运行。具体地说,在nmake检查更改并防止在输入文件未更改时生成时,Perl脚本始终运行。 调用自定义目标会导致预构建和后构建运行,即使自定义目标没有生成新的输出(它运行,但只执行检查) 如果我的自定义目标没有生成任何新的输出,我希望阻止预构建和后构建运行。到目前为止,我还没有找到一种方法 另一个选项是,如果源未更改,则阻止自定义目标
任何帮助都将不胜感激 确保您的自定义目标具有Inputs and Outputs属性,该属性正确描述了哪些文件将用作输入,哪些文件是结果输出。MsBuild将使用这些文件上的时间戳来决定您是否实际更改了任何内容。这些文件上的时间戳必须早于将作为目标输出生成的文件,这是MsBuild决定的 例如:
<Target Name="Custom"
Inputs="@(CSFile)"
Outputs="hello.exe">
<Csc
Sources="@(CSFile)"
OutputAssembly="hello.exe"/>
</Target>
<PropertyGroup>
<BuildDependsOn>
Convert;
$(BuildDependsOn);
</BuildDependsOn>
</PropertyGroup>
见:
<PropertyGroup>
<BuildDependsOn>
Convert;
$(BuildDependsOn);
</BuildDependsOn>
</PropertyGroup>