【问题标题】:CMake and Visual Studio resource filesCMake 和 Visual Studio 资源文件
【发布时间】:2012-01-01 06:15:03
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 我不了解 CMake,但您对资源文件的使用方式是正确的。如果你想把它们放在 CMakeLists.txt 文件中,你必须把它们放在一些不会被构建的目标中,应该是文档中的内容。
  • @JoachimPileborg:感谢您提供的信息。是的,问题是我也不知道 CMake,而且我在文档中没有找到任何似乎相关的内容...... :)
  • 在一些关于 MinGW 的错误报告中发现了这个,虽然看起来它应该可以工作? “正如 IRC 上的某个人暗示的那样,我将 resource.h/resource.rc 文件添加到项目 add_executable() 源列表中。”

标签: c++ visual-studio visual-studio-2005 cmake resource-files


【解决方案1】:

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

【讨论】:

  • 你不应该为.ico文件设置它,否则MinGW的windres会失败。
【解决方案2】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多