我有一个 CMake 项目,其中包含代码和一些数据文件(准确地说是图像)。
我的目录结构是这样的:
src 包含源代码、data 数据文件。 CMake 建议使用源代码构建,所以当我调用 make 时,我有可执行程序,但没有数据文件,因此我无法执行该程序。
当然,make install 会将我的数据文件复制到所需的位置并使其工作,因此我现在是这样开发的:
<edit source code>
如果我正在使用命令行和编辑器,那没问题,但我最近决定转向 Eclipse CDT。从 CMake 生成 Eclipse 项目效果很好,但从 Eclipse 手动执行安装目标就不太好。
你们是如何解决这个问题的?你的程序是否有一些聪明的算法来尝试找到它的数据目录,即使它不是二进制文件所在的位置?或者你不使用源代码构建?
最佳答案
configure_file
应该可以解决这个问题。
我的数据目录中有一个 CMakeLists.txt 文件,其中包含以下内容:
configure_file(data_file ${CMAKE_CURRENT_BINARY_DIR}/data_file COPYONLY)
这会在调用 cmake 时将指定的文件复制到构建目录中,因此即使在源构建之外,它也可以在同一位置使用。
configure_file
不支持目录,而 file
命令执行:file(COPY assets DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
关于cmake - 如何最好地使用 CMake 处理数据文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3431151/