我正在使用CMake
在一个小C项目上使用OpenGL
。为了能够运行,我的可执行文件需要访问一些资源文件,如3D网格,纹理或着色器程序源。
当我运行生成的可执行文件时,当前文件夹是创建它的目录。这个目录可能会有所不同,具体取决于二叉树的位置(源外?源头?在计算机的任何地方)。但我的资源位于我的源代码树附近。
我希望我的CMakeLists.txt
复制我的可执行输出目录中的资源文件夹,但我不知道如何做到这一点。此外,我不确定这是CMake的“最佳实践”。
感谢您阅读:)
答案 0 :(得分:2)
您有两个有用的变量:CMAKE_CURRENT_BINARY_DIR
和CMAKE_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文件进行循环并在其上循环(也许还有一些函数可以复制目录而不是文件列表。)