【发布时间】:2011-04-01 09:44:17
【问题描述】:
理论上,使用 cmake 构建带有资源文件的 Win32 应用程序非常容易。在add_executable 命令中,可以像列出 C 或 C++ 源文件一样轻松地列出资源文件。但是,在使用 MinGW 工具进行构建时存在一个已知错误。
我找到了一种解决方法,即在 CMakeFiles.txt 中包含以下内容...
if(MINGW)
set(CMAKE_RC_COMPILER_INIT windres)
ENABLE_LANGUAGE(RC)
SET(CMAKE_RC_COMPILE_OBJECT
"<CMAKE_RC_COMPILER> <FLAGS> <DEFINES> -o <OBJECT> <SOURCE>")
endif(MINGW)
不幸的是,这似乎不起作用。似乎发生的事情是windres 生成了一个<whatever>.rc.res 文件,ld 不理解。
在我的搜索中,我强烈怀疑 Win32 支持被视为一个非常低的优先级,尤其是在 Visual Studio 之外。这是可以理解的,因为 Win32 显然不像以前那么重要了。当然,Visual Studio 速成版也很容易免费获得。
即便如此,如果我可以将 MinGW GCC 用于一些我仍在使用的旧 Win32 应用程序,那对我来说会很方便。如果不出意外,我可以获得 GCOV 测试覆盖率统计信息。
显然,如果一切都失败了,我总是可以使用自定义构建命令来处理资源文件。一个问题是我不熟悉 windres 或 ld,或者 MinGW 是如何处理 Win32 资源文件的。另一个是,如果有人已经有了一个他们想与我分享的优质轮子,我真的不想重新发明轮子。
基本上就是这样 - 我如何支持使用 cmake 和使用 MinGW 构建带有资源文件的 Win32 应用程序(但不破坏对 Visual Studio 的支持)?
【问题讨论】:
-
看来 cmake 错误 (cmake.org/Bug/view.php?id=4068) 已修复为 cmale 2.8.5。 2.8.12 是最古老的仍在使用的版本,因此现在不需要解决任何问题。
标签: winapi mingw cmake resource-files