【问题标题】:CMake set default resource/asset directoryCMake 设置默认资源/资产目录
【发布时间】:2018-09-13 04:09:27
【问题描述】:

我正在尝试使用 cmake 制作一个简单的 sfml/c++ 应用程序。

假设我需要在代码中的某处引用一个简单的foo.png。我发现只有当它位于 build 文件夹内时我才能这样做。这是我调用cmake .. 命令的文件夹,也是我所有cmake 文件(除了CMakeLists.txt 和库模块,例如FindSFML.cmake)所在的文件夹。

我不希望它在那里...而是在一个名为art 的文件夹中,该文件夹位于build 的父目录中。我想这样做是为了让“build”文件夹对项目来说不是必不可少的(从某种意义上说,任何人都可以构建项目而不依赖于其中的东西)。

据我所见 - 在线查看 - 每个人都倾向于建议使用 file(COPY ...) 命令(或类似命令)将所有需要的资产/资源复制到另一个类似于我之前的文件夹中 -提到build 文件夹(我知道这个必须有一个技术术语......构建目录,也许?)和利润。但是这个复制过程真的有必要吗?你不应该只指定一个不同的目录来加载你的资产/资源吗?

或者也许我完全搞错了...... cmake 有时很难理解。在此先感谢并原谅我缺乏技术知识。

【问题讨论】:

    标签: c++ cmake assets sfml build-system


    【解决方案1】:

    我找到了一个使用符号链接和add_custom_command 函数的解决方案。

    在这里(假设上面描述的布局):

    set (source "${CMAKE_SOURCE_DIR}/resources")
    set (destination "${CMAKE_CURRENT_BINARY_DIR}/resources")
    add_custom_command(
        TARGET ${PROJECT_NAME} POST_BUILD
        COMMAND ${CMAKE_COMMAND} -E create_symlink ${source} ${destination} 
        DEPENDS ${destination}
        COMMENT "symbolic link resources folder from ${source} => ${destination}"
    )
    

    我实际上是从博客中得到的...这里是良好公民文章的链接:http://qrikko.blogspot.it/2016/05/cmake-and-how-to-copy-resources-during.html

    祝你有美好的一天。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-01
      • 2018-08-24
      • 2015-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多