• VS2019编译一个带qrc项目时出现的问题


    问题

    跑中科大付老师的一个参数化的代码,原来的项目可能是用VS2015写的,编译的时候报错

    严重性	代码	说明	项目	文件	行	禁止显示状态
    错误	MSB8066	“surfacemeshprocessing.qrc”的自定义生成已退出,代码为 3。	Surface_Mesh	C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets	249	
    
    • 1
    • 2

    查了半天始终找不到解决方案,后来在log里发现执行这句的时候实际上执行的是

    \bin\rcc.exe surfacemeshprocessing.qrc balabala
    
    • 1

    在项目设置里始终找不到在哪里有相关的设置,实在没办法直接用VSCode打开项目文件夹,全局搜索surfacemeshprocessing.qrc,找到了下面的内容:

      <ItemGroup>
        <CustomBuild Include="surfacemeshprocessing.qrc">
          <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(FullPath);%(AdditionalInputs)AdditionalInputs>
          <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Rcc%27ing %(Identity)...Message>
          <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)Outputs>
          <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cppCommand>
          <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(FullPath);%(AdditionalInputs)AdditionalInputs>
          <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Rcc%27ing %(Identity)...Message>
          <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)Outputs>
          <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cppCommand>
          <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(FullPath);%(AdditionalInputs)AdditionalInputs>
          <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Rcc%27ing %(Identity)...Message>
          <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)Outputs>
          <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cppCommand>
          <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(FullPath);%(AdditionalInputs)AdditionalInputs>
          <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Rcc%27ing %(Identity)...Message>
          <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)Outputs>
          <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cppCommand>
        CustomBuild>
      ItemGroup>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在这里看得就比较清晰了,原因是 $(QTDIR) 这个变量是空的,但很奇怪的是我安装了QT VS tools扩展,并且正确设置了QT路径:
    在这里插入图片描述

    在Visual Studio的开发者powershell里 $(QTDIR) 也是正确的值。
    再进一步查看了一下原始的内容,发现是要在.user文件里设置了旧的环境变量,或者叫宏,要更新一下。

    解决方案

    要么把原来的.user文件删掉,在系统环境变量里自己加 $QTDIR 。要更改我也不知道咋整,直接改文件可能可以,通过GUI有点麻烦,太菜了,就这样了。

  • 相关阅读:
    一套轻量、安全的问卷系统基座,提供面向个人和企业的一站式产品级解决方案
    Node.js 入门教程 23 使用 npm 的语义版本控制 & 24 卸载 npm 软件包 & 25 npm 全局或本地的软件包
    Linux 服务器 Firewalld 防火墙配置端口转发
    C语言-流程控制
    国产华为设备:NAT地址转换实验
    聚苯乙烯/Fe3O4纳米复合材料PS@Fe3O4|硫化锌-四氧化三铁(ZnS/Fe3O40纳米复合物(齐岳)
    Java与GitLab OpenAPI交互
    【Iceberg+Alluxio】助力加速数据通道(下篇)
    屡破纪录|Hubble数据库又获2022全球数字经济大会背书 数据库赛道同类选优入选 “数字经济产业创新成果”
    玩转Mysql系列 - 第21篇:什么是索引?
  • 原文地址:https://blog.csdn.net/DavieChars/article/details/133929776