C++ CMake和Visual Studio资源文件
我将使用VisualStudio 2005创建的C++项目转换为CMake,并发现项目中包含的资源文件有点问题。 该项目包括一个C++ CMake和Visual Studio资源文件,c++,visual-studio,visual-studio-2005,cmake,resource-files,C++,Visual Studio,Visual Studio 2005,Cmake,Resource Files,我将使用VisualStudio 2005创建的C++项目转换为CMake,并发现项目中包含的资源文件有点问题。 该项目包括一个.rc文件、一组.ico文件和一个.rc2文件 常规的.rc文件在生成的项目中运行良好,并使用资源编译器。但是,.ico和.rc2文件在刚刚包含时会引起问题,因为在生成的项目中,Visual Studio试图使用C/C++编译器编译它们 我假设这些文件包含在.rc文件中,因此可能不将它们包含在CMakeLists.txt文件中,但由于显然可以在项目中列出它们(它们在原始
.rc
文件、一组.ico
文件和一个.rc2
文件
常规的.rc
文件在生成的项目中运行良好,并使用资源编译器。但是,.ico
和.rc2
文件在刚刚包含时会引起问题,因为在生成的项目中,Visual Studio试图使用C/C++编译器编译它们
我假设这些文件包含在.rc
文件中,因此可能不将它们包含在CMakeLists.txt文件中,但由于显然可以在项目中列出它们(它们在原始项目中可见),我希望这样做,这样生成的项目的用户就可以看到这些文件正在被使用
在CMake中处理这些额外VS资源文件的正确方法是什么?尝试
设置源文件属性(your.ico your.rc2 properties LANGUAGE RC)
默认情况下,它不应对这些文件执行任何操作。源文件属性语言应为空,因此文件的操作应通过文件类型进行检查。它不应该是任何东西,因为它不应该编译
检查您的CMakeLists.txt,它不包含会干扰该属性的set\u source\u files\u properties命令
如果要对文件执行某些操作,请使用以下两种方法:
使用add_custom_target,您可以在生成项目时添加它们并为它们运行自定义命令。假定文件已更改
使用configure_文件,如果需要,您可以轻松地将它们复制到生成目录。使用COPYONLY标志。我不知道CMake,但关于如何使用资源文件,您是对的。如果您想将它们放在CMakeLists.txt文件中,您必须将它们放在一些不会生成的目标中,这些目标应该是文档中的内容。@JoachimPileborg:谢谢您提供的信息。是的,问题是我也不知道CMake,而且我在文档中没有找到任何似乎相关的东西…:)在一些关于MinGW的bug报告中发现了这一点,尽管看起来它应该可以工作?“正如IRC上有人暗示的那样,我已将resource.h/resource.rc文件添加到项目add_executable()源列表中。”您不应该将其设置为.ico文件,否则MinGW的windres将失败。