如何将自定义内容添加到CMake项目?

时间:2013-12-23 17:16:07

标签: cmake

我们最近开始从使用普通视觉工作室项目切换到使用适当的CMake文件。以前我们将在解决方案根文件夹中包含“Content”文件夹,以允许我们的可执行文件使用相对路径(例如“../ Tiles / tileset1.png”)从中访问内容。

我们如何确保CMake正确复制文件,或以其他方式确保我们的可执行文件能够在从Visual Studio调试时找到内容文件夹而无需手动设置工作目录?

1 个答案:

答案 0 :(得分:0)

我可以想到几个不同的选择:

  1. 让CMake将所有可执行文件放在同一文件夹中,如this question中所述。然后,您可以使用../Tiles../../Tiles或其他任何内容。但请注意,您可能需要考虑按目标而不是全局设置此项,例如,使用:

    set_target_properties(
      my_target
      PROPERTIES
        RUNTIME_OUTPUT_DIRECTORY
          ${CMAKE_BINARY_DIR}/bin
    )
    

    设置CMAKE_RUNTIME_OUTPUT_DIRECTORY工作正常,但有些人认为这是“旧”的做法。 (根据您的需要,您可能还需要设置LIBRARY_OUTPUT_DIRECTORY,可能还需设置ARCHIVE_OUTPUT_DIRECTORY。)

  2. 使用环境变量(例如,CONTENT_ROOT或某些)来查找资源。硬编码对生产有意义的默认值,但允许开发人员为其特定的工作流程覆盖它。

  3. 查看跨平台资源库(类似于Qt的QRC文件,但可能与Qt无关)。
  4. 尝试this FAQ answer中列出的CMake模块来更改Visual Studio的工作/调试目录。
  5. 实际上,1和2的组合可能是你最好的选择......