windres 找不到使用 MSYS2-minGW64 和 Codelite 构建 wxWidgets 项目的“wx/msw/wx.rc”

问题描述

提出新问题,因为一些older answer不适用于我的情况。

根据主题,我无法在 Windows 10 中使用 CodeLite 14 和 wxWidgets 3.1.4(使用 MSYS2-mingW64 编译)编译基本的 wxWidgets“Hello,World”程序。

错误信息在行

C:/Users/Federico/codelite/wxHelloWorld/win_resources.rc:1:10: Fatal error: wx/msw/wx.rc: No such file or directory
    1 | #include "wx/msw/wx.rc"
      |          ^~~~~~~~~~~~~~
compilation terminated.

wx-config 运行 wx-config --rcflags 返回的资源文件标志是:

--use-temp-file --define __WxmsW__ --define _UNICODE --include-dir C:/wx/3.1.4-msys/lib/gcc_lib/mswu --include-dir C:/wx/3.1.4-msys/include

所有文件夹/文件都正确就位。通过修补这些标志,我发现如果我删除 --use-temp-file 标志,例如:

,没有给出任何错误,并且程序可以正确编译
--define __WxmsW__ --define _UNICODE --include-dir C:/wx/3.1.4-msys/lib/gcc_lib/mswu --include-dir C:/wx/3.1.4-msys/include

然后一切正常。不幸的是,该标志认由 wx-config 假定,因此唯一简单的解决方案是停止使用 wx-config 并手动配置所有编译器标志。所以:

  • 有什么办法可以避免这种情况吗?
  • 那个标志是什么意思?

解决方法

这真的很奇怪,因为 commit 093c3067e8 中的 wx 生成文件中删除了 --use-temp-file 的使用(不要使用 windres --use-temp-file 选项,2020-07-13)是 3.1.4 的一部分,所以您根本不应该看到它。

但是等等,它更奇怪,因为 wx-config 没有您显然使用的 --rcflags 选项。它确实有 --rescomp 选项,但它的输出中根本没有包含 --use-temp-file,AFAICS,而且绝对没有在 3.1.4 中。

所以看起来您使用的不是官方 3.1.4 版本。您的第一个问题的答案是改用官方来源。