【问题标题】:Add files with target using CMake使用 CMake 添加带有目标的文件
【发布时间】:2014-02-04 08:45:53
【问题描述】:

我正在使用CMake 处理一个使用OpenGL 的小C 项目。为了能够运行,我的可执行文件需要访问一些资源文件,例如 3D 网格、纹理或着色器程序源。

当我运行生成的可执行文件时,当前文件夹是创建它的目录。此目录可能因二叉树位置而异(源外?内源?计算机中的任何位置)。但我的资源位于我的源代码树附近。

我希望我的CMakeLists.txt 将资源文件夹复制到我的可执行输出目录中,但我不知道该怎么做。此外,我不确定这是 CMake 的“最佳实践”。

感谢您的阅读:)

【问题讨论】:

    标签: c cmake


    【解决方案1】:

    您有 2 个有用的变量可以这样做:CMAKE_CURRENT_BINARY_DIRCMAKE_BINARY_DIR,前者指的是当前的 CMakeLists.txt 输出目录,后者指的是顶级项目输出目录。

    大多数时候,您根据它处理可执行文件附近的资源,那么您肯定会想要引用CMAKE_CURRENT_BINARY_DIR

    configure_file(
      "MyResourceDir/myresource"
      "${CMAKE_CURRENT_BINARY_DIR}/" COPYONLY
    )
    

    此命令将在与当前CMakeLists.txt匹配的目录中复制名为myresourceCURRENT_CMAKE_SOURCE_DIR/MyResourceDir的资源。

    您可以将 MyResourceDir 的文件 glob 并在其上循环(也许还有一些功能可以复制目录而不是文件列表)。

    【讨论】:

    • 您的回答帮助我找到了表达需求的正确方式。事实上,我需要将整个目录和子目录复制到二进制方向。 configure_file 是个好主意,我找到了另一种方法来做我需要的事情:stackoverflow.com/questions/13429656/…
    猜你喜欢
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 2013-01-24
    相关资源
    最近更新 更多