使用CMake添加目标文件

时间:2014-02-04 08:45:53

标签: c cmake

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

当我运行生成的可执行文件时,当前文件夹是创建它的目录。这个目录可能会有所不同,具体取决于二叉树的位置(源外?源头?在计算机的任何地方)。但我的资源位于我的源代码树附近。

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

感谢您阅读:)

1 个答案:

答案 0 :(得分:2)

您有两个有用的变量:CMAKE_CURRENT_BINARY_DIRCMAKE_BINARY_DIR,前者指的是当前的CMakeLists.txt输出目录,后者指的是顶级项目输出目录。 / p>

大多数情况下,您根据它处理可执行文件附近的资源,然后您肯定想要引用CMAKE_CURRENT_BINARY_DIR

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

此命令将复制与当前CURRENT_CMAKE_SOURCE_DIR/MyResourceDir匹配的目录中名为myresource的{​​{1}}的资源。

您可以对CMakeLists.txt的glob文件进行循环并在其上循环(也许还有一些函数可以复制目录而不是文件列表。)