Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CMake和Visual Studio资源文件_C++_Visual Studio_Visual Studio 2005_Cmake_Resource Files - Fatal编程技术网

C++ CMake和Visual Studio资源文件

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文件中,但由于显然可以在项目中列出它们(它们在原始

我将使用VisualStudio 2005创建的C++项目转换为CMake,并发现项目中包含的资源文件有点问题。

该项目包括一个
.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将失败。