我正在将使用Visual Studio 2005创建的C ++项目转换为CMake,并且偶然发现了项目中包含的资源文件的一些问题。
该项目包含.rc
文件,一堆.ico
个文件和一个.rc2
文件。
常规.rc
文件在生成的项目中正常工作并使用资源编译器。然而,.ico
和.rc2
文件只是在被包含时会引起问题,因为在生成的项目中,Visual Studio会尝试使用C / C ++编译器编译它们。
我假设这些文件包含在.rc
文件中,因此它可能只是不将它们包含在CMakeLists.txt文件中,但因为显然可以在项目中列出它们(它们在原始项目中可见)我想这样做,以便生成的项目的用户可以看到正在使用这些文件。
在CMake中处理这些额外VS资源文件的正确方法是什么?
答案 0 :(得分:2)
尝试set_source_files_properties(your.ico your.rc2 PROPERTIES LANGUAGE RC)
。
答案 1 :(得分:1)
默认情况下,它不应对这些文件执行任何操作。源文件属性LANGUAGE应为空,因此应通过文件类型检查文件的操作。哪个不应该是什么,因为它不应该编译。
检查你的CMakeLists.txt,它不包含会破坏该属性的set_source_files_properties命令。
如果你想对这些文件做些什么,可以采取以下两种方法:
使用add_custom_target,您可以在构建项目时添加它们并为它们运行自定义命令。假设文件已更改。
使用configure_file,您可以根据需要轻松将它们复制到构建目录。使用COPYONLY标志。