cmake - 如何最好地使用 CMake 处理数据文件?

标签 cmake eclipse-cdt

我有一个 CMake 项目,其中包含代码和一些数据文件(准确地说是图像)。

我的目录结构是这样的:

  • 数据

  • src 包含源代码、data 数据文件。 CMake 建议使用源代码构建,所以当我调用 make 时,我有可执行程序,但没有数据文件,因此我无法执行该程序。

    当然,make install 会将我的数据文件复制到所需的位置并使其工作,因此我现在是这样开发的:
  • cmake -DCMAKE_INSTALL_DIR=dist
  • <edit source code>
  • 进行安装
  • dist/myprogram.exe

  • 如果我正在使用命令行和编辑器,那没问题,但我最近决定转向 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/

    相关文章:

    c++ - CMake find_* 不搜索子目录

    windows - cmake:树外构建的问题

    c++ - 使用 CMake 包含来自静态库的头文件

    android - 如何解决 Android NDK 构建命令失败的问题?

    ubuntu - 柯南从容器内部失败,出现 "sudo: not found"错误

    c - 如何在 Eclipse 中关闭多行注释中的 '*'?

    c++ - 如何使用 Eclipse 处理 Boost.Test 输出

    eclipse - 通过插件以编程方式修改 Eclipse 工作区和 CDT 选项

    c - 将库中的外部源文件添加到 Eclipse-CDT 中的项目

    c - Scanf 似乎无法在带有 GDB 的 Eclipse CDT 中以 Debug模式工作