2011-11-18 113 views
7

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

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

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

我认为这些文件包含在.rc文件中,所以它可能不会将它们包含在CMakeLists.txt文件中,但是因为显然可以在项目中列出它们(它们在原始项目)我想这样做,以便生成的项目的用户可以看到这些文件正在使用。

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

+0

我不知道CMake,但你对如何使用资源文件是正确的。如果你想把它们放在CMakeLists.txt文件中,你必须把它们放在一些不会构建的目标中,应该是文档中的东西。 –

+0

@JoachimPileborg:谢谢你的信息。是的,问题是我不知道CMake,并且我没有在似乎相关的文档中找到任何东西...... :) – villintehaspam

+0

在关于MinGW的一些错误报告中发现了这一点,但看起来应该起作用? “IRC上的某些人暗示我将resource.h/resource.rc文件添加到项目的add_executable()源列表中。” –

回答

2

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

1

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

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

如果你想要做的事的文件,这里有两种方法可以做到的事情:

随着add_custom_target您可以添加它们并运行它们,当你生成项目的自定义命令。承认文件已经改变。

使用configure_file,您可以根据需要轻松将它们复制到构建目录。用COPYONLY标志。