gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 14:59:29 24 4
gpt4 key购买 nike

我在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com