c++ - VS2013 C++ 自定义生成工具不工作

标签 c++ visual-studio-2013 custom-build-step

对于冗长的文本,我深表歉意,但我在为 C++ 项目使用 VS2013 中的自定义生成工具功能时遇到了一些问题。我想获取项目的“resource.h”文件并生成一个输出文件,出于这些目的,我们将其称为“resource.out”。

我编写了一个带有两个命令行参数的工具——“resource.h”文件和“resource.out”文件。我首先在一个简单的应用程序向导生成的文档/ View 应用程序 MFCApplication1 上尝试了这个。我将文件“resource.x”添加为虚拟文件以使用自定义构建工具进行“编译”。在该特定文件上,我将“项目类型”设置为“自定义构建工具”,并且在配置该工具时我有以下内容:

Command Line: "<path-to-tool>" resource.h .\res\resource.out
Outputs: .\res\resource.out
Additional Dependencies: resource.h

这行得通。当我构建 MFCApplication1 时,我在输出窗口中看到以下内容:

1>  Performing Custom Build Tools
1>  Successfully generated resource out file ('res\resource.out') 

第二行是我的自定义构建工具的输出。所以在这个简单的测试中,一切都如我所料。

现在我正在我的真实代码上尝试同样的事情。我有一个包含多个项目的解决方案,一个项目负责获取另一个项目的资源并生成一个 dll。目录结构如下:

Main
    MainApp
        resource.h
    MainRes
        MainRes.vcxproj references "..\MainApp\resource.h"

因此 MainRes 项目引用了 MainApp 项目中的资源文件。在我的 MFCApplication1 实验成功之后,我将“resource.x”添加到主应用程序,并在 MainRes 中引用它:

Main
    MainApp
        resource.h
        resource.x
    MainRes
        MainRes.vcxproj references "..\MainApp\resource.h"
        MainRes.vcxproj references "..\MainApp\resource.x"

在 MainRes 项目中,我选择了“resource.x”并通过上下文属性,将其“项目类型”设置为“自定义构建工具”,并将其配置为:

Command Line: "<path-to-tool>" ..\MainApp\resource.h ..\MainApp\res\resource.out
Outputs: ..\MainApp\res\resource.out
Additional Dependencies: ..\MainApp\resource.h

现在,当我尝试在 MainRes 中编译“resource.x”时,我收到以下警告(警告 MSB8018:没有为项目“..\MainApp\resource.x”指定输出):

1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(170,5): warning MSB8018: No outputs specified for item "..\MainApp\resource.x". Its custom build command will be skipped.

所以我认为这可能是一个上下文问题,并将配置更改为:

Command Line: "<path-to-tool>" resource.h .\res\resource.out
Outputs: .\res\resource.out
Additional Dependencies: resource.h

我收到了同样的警告。我不明白我在这里做错了什么。我将“输出”设置为一个文件,并且在命令行中有输出文件。提前感谢任何人对此的帮助。我已经在这上面花了太多时间...

  • 史蒂夫

最佳答案

太棒了...我终于弄明白了,由于某种原因,使用编辑器修改 Custom Build Tool 配置实际上是在错误的配置下将数据保存到 vcxproj 中。尽管我在编辑器中正确设置了配置和平台,但它正在写入文件中的不同配置。谁他妈的知道这是为什么,但吸取教训 - 始终检查您的 vcxproj 文件!

关于c++ - VS2013 C++ 自定义生成工具不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50256701/

相关文章:

c++ - 如何获取析构函数的成员函数指针?

c# - 为应用程序提供与 Visual Studio 相同的视觉外观

c# - VS 2013 xaml 编辑器和 Microsoft.VCLibs.120.00.Debug

visual-studio - Visual Studio 自定义构建步骤规则?

c# - 如何在使用模拟命令行循环的 API 时重定向 CLIPS 输入和输出?

c++ - stringstream 无符号输入验证

c++ - 如何将返回类型字符串的数据复制到C++?

c++ - WM_HOTKEY 没有捕捉到

visual-studio - 自定义构建步骤和构建后事件之间有什么区别?

visual-studio - 在 Visual Studio 2008 中为自定义构建步骤设置工作目录