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

时间:2018-04-03 18:19:01

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

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

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

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

从我所看到的 - 在网上看,就是 - 每个人都倾向于建议使用file(COPY ...)命令(或类似的东西)将所有需要的资源/资源复制到类似于我的另一个文件夹中前面提到的build文件夹(我知道必须有这个...构建目录的技术术语吗?)和利润。但这种复制过程真的有必要吗?您是否应该只能指定从中加载资产/资源的其他目录?

或者也许我错了... cmake有时很难理解。提前谢谢,请原谅我缺乏技术知识。

1 个答案:

答案 0 :(得分:0)

我找到了一个使用符号链接和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

度过愉快的一天。

相关问题