c - 为什么 Visual Studio 2012 在未更改源文件时运行自定义构建步骤?

标签 c visual-studio msbuild dependencies yacc

我在 Visual Studio 2012 C++/CLI 中使用 yacc 和 lex,并为 yacc 源文件创建了自定义构建步骤,如下图所示

Custom Build Property Page

输出文件有两个依赖项。它们是 yacc 源文件 icl5kyacc.y 和 yyparse.c 模板文件。每次我构建解决方案时,自定义构建步骤都会运行,即使 yyparse.c 和 icl5kyacc.y 源文件没有被修改。这是构建后的目录列表。

  21-Sep-2012  10:19:18p         28,210    A icl5kyacc.y
  17-Sep-2012   7:32:06p          9,042    A yyparse.c
  22-Sep-2012  11:43:56a         38,233    A ICL5KYACC.cpp
  22-Sep-2012  11:43:56a          2,160    A icl5kyacc.h

再次构建之后

2>从icl5kyacc.y生成icl5kyacc.cpp

  21-Sep-2012  10:19:18p         28,210    A icl5kyacc.y
  17-Sep-2012   7:32:06p          9,042    A yyparse.c
  22-Sep-2012  11:45:46a         38,233    A ICL5KYACC.cpp
  22-Sep-2012  11:45:46a          2,160    A icl5kyacc.h

我是否错误地认为使用自定义构建步骤应该自动在构建步骤的输入和输出文件之间应用标准依赖关系规则?我很好奇的一件事是 Studio 在附加依赖项下为我放入的 %(AdditionalInputs) 宏。不确定那是什么,或者它是否以某种方式指向正在修改的文件。

最佳答案

您确定您的输出文件确实位于您指定的位置吗?

查看您的 list ,您在 %(Directory)yyparse.c 中列出了输入(这也应该包括 .y 文件)。你的输出不应该也位于%(Directory)icl5kyacc.h%(Directory)ICL5KYACC.cpp吗,看到你的listing似乎表明他们进去了同一个目录。

如果找不到输出文件或输出文件比输入文件旧,构建任务将重新运行。如果您的输出文件路径错误,则该工具将找不到它们并假定构建任务需要再次运行。

关于c - 为什么 Visual Studio 2012 在未更改源文件时运行自定义构建步骤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12546819/

相关文章:

c - 我自己的 C Shell 的历史问题

c - 在 Linux 上复制 Visual Studio 的内存违规检测

c# - 如何从解决方案中引用项目?

msbuild - 当 CreatePackageOnPublish 设置为 true 时,TFS Team Build 中的长路径问题。

c# - 在 WPF 应用程序中使用来自 .NET Standard 程序集的内容文件

c - 如何从 Serial.read() 中检索字符串值;

c - 如何将 C 控制台应用程序附加到正在运行的进程

c - 为什么 lseek 允许我设置负文件位置?

asp.net - Visual Studio 无法在 IIS 中创建网站

c# - (VS2017) 运行选择的代码生成器时出错 : 'Sequence contains no elements'