10

我正在将使用 Visual Studio 2005 创建的 C++ 项目转换为 CMake,并且偶然发现项目中包含的资源文件存在一些问题。

项目包括一个.rc文件、一堆.ico文件和一个.rc2文件。

常规.rc文件在生成的项目中工作正常并使用资源编译器。然而,.icoand.rc2文件在刚刚被包含时会引起问题,因为在生成的项目中,Visual Studio 会尝试使用 C/C++ 编译器来编译它们。

我假设这些文件包含在.rc文件中,因此不将它们包含在 CMakeLists.txt 文件中可能会起作用,但由于显然可以在项目中列出它们(它们在原始项目中可见)我希望这样做,以便生成项目的用户可以看到这些文件正在被使用。

在 CMake 中处理这些额外的 VS 资源文件的正确方法是什么?

4

2 回答 2

4

尝试set_source_files_properties(your.ico your.rc2 PROPERTIES LANGUAGE RC)

于 2011-11-18T16:53:22.000 回答
1

默认情况下,它不应该对这些文件做任何事情。源文件属性 LANGUAGE 应为空,因此文件的操作应由文件类型检查。这不应该是任何东西,因为它不应该编译。

检查您的 CMakeLists.txt 是否不包含会与该属性混淆的 set_source_files_properties 命令。

如果你想对文件做一些事情,这里有两种方法:

使用 add_custom_target 您可以在构建项目时添加它们并为它们运行自定义命令。假设文件已更改。

如果需要,您可以使用 configure_file 轻松地将它们复制到构建目录。带有 COPYONLY 标志。

于 2015-06-01T09:47:39.017 回答