我正在尝试使用cmake创建一个简单的sfml / c ++应用程序。
假设我需要在代码中的某处引用一个简单的foo.png
。我发现如果它位于build
文件夹内,我只能这样做。这是我调用cmake ..
命令的文件夹,其中包含我的所有cmake文件(除了CMakeLists.txt
和库模块,例如FindSFML.cmake
)。
我不希望它看到那里......但是在名为art
的文件夹中,位于build
的父目录中。我想这样做是为了让“build”文件夹对项目不是必不可少的(从某种意义上说,任何人都可以构建项目而不依赖于其中的内容)。
从我所看到的 - 在网上看,就是 - 每个人都倾向于建议使用file(COPY ...)
命令(或类似的东西)将所有需要的资源/资源复制到类似于我的另一个文件夹中前面提到的build
文件夹(我知道必须有这个...构建目录的技术术语吗?)和利润。但这种复制过程真的有必要吗?您是否应该只能指定从中加载资产/资源的其他目录?
或者也许我错了... cmake有时很难理解。提前谢谢,请原谅我缺乏技术知识。
答案 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
度过愉快的一天。