CMake和Visual Studio资源文件

10
我正在将使用Visual Studio 2005创建的C++项目转换为CMake,并在项目中遇到了一些问题,问题出在被包含在项目中的资源文件上。
该项目包括一个 .rc 文件,一堆 .ico 文件和一个 .rc2 文件。
生成的项目中,普通的 .rc 文件可以正常工作并使用资源编译器。然而,仅仅是被包含进来的 .ico 和 .rc2 文件会导致问题,因为在生成的项目中,Visual Studio 尝试使用 C/C++ 编译器对它们进行编译。
我认为这些文件是由 .rc 文件包含的,因此,在 CMakeLists.txt 文件中不包含它们可能会起作用,但既然明显可以将它们列在项目中(它们在原始项目中可见),我希望这样做,以便生成的项目的用户可以看到这些文件的使用情况。
正确处理这些额外的VS资源文件的方法是什么?

我不懂CMake,但你关于如何使用资源文件是正确的。如果你想把它们放在CMakeLists.txt文件中,你必须将它们放在一些不会被构建的目标中,应该在文档中有所说明。 - Some programmer dude
@JoachimPileborg:谢谢您提供的信息。是的,问题在于我也不懂CMake,而且我在文档中也没有找到任何相关的内容... :) - villintehaspam
在一些关于MinGW的错误报告中发现了这个,不过看起来应该可以工作?“正如IRC上的某人暗示的那样,我将resource.h/resource.rc文件添加到项目add_executable()源列表中。” - Tom Kerr
2个回答

4
尝试使用set_source_files_properties(your.ico your.rc2 PROPERTIES LANGUAGE RC)设置源文件属性。

你不应该为.ico文件设置它,否则MinGW的windres将会失败。 - jhasse

1
默认情况下,它不应该对这些文件做任何操作。源文件属性 LANGUAGE 应该为空,因此文件的操作应由文件类型检查。这是因为它不应该编译任何东西。
请检查您的 CMakeLists.txt 文件,确保不包含 set_source_files_properties 命令,否则会影响该属性。
如果您想要对文件进行操作,有两种方法:
使用 add_custom_target,可以在构建项目时添加它们并运行自定义命令,前提是文件已更改。
使用 configure_file,如果需要,您可以轻松将它们复制到构建目录中。请使用 COPYONLY 标志。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接