CMake设置默认资源/资产目录

3
我正在使用cmake创建一个简单的sfml/c++应用程序。
假设我需要在代码中引用一个名为“foo.png”的简单图片。我发现只有当它位于“build”文件夹内部时,我才能这样做。这个文件夹是我调用“cmake ..”命令的位置,除了“CMakeLists.txt”和库模块(如“FindSFML.cmake”)之外,所有的cmake文件都驻留在这里。
我不想让它看起来像那样......而是在名为“art”的文件夹中,该文件夹位于“build”的父目录中。我想这样做是为了保持“build”文件夹对于项目不是必要的(也就是说,任何人都可以构建项目,而不依赖于其中的东西)。
就我所看到的 - 在网上搜索 - 每个人似乎都倾向于建议使用“file(COPY ...)”命令(或类似命令)将所有所需的资源/资产复制到另一个类似于我上述提到的“build”文件夹的文件夹中,并获得利润。但是,这个复制过程真的有必要吗?难道你不能只指定另一个目录来加载你的资产/资源吗?
或者我完全理解错了......有时候,cmake确实很难理解。先谢谢你的帮助,不足之处请见谅。
1个回答

2
我发现一种使用符号链接和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

祝你有美好的一天。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接