Cmake和资源路径

时间:2015-01-06 08:36:09

标签: path resources cmake

我有一个具有以下目录树结构的项目:

CMakeLists.txt
\src
   test.cpp
\include
   test.h
\resources
   various resource files

test.cpp包含正确的路径(相对于root),以便指向资源目录中的资源。 在构建目录中使用源外构建运行CMake时,\ build目录将创建为根目录的子目录,但现在无法再访问test.cpp中硬编码的先前正确路径所指向的资源,因为工作目录不是根。

如何使用CMake和源外构建来管理资源?

1 个答案:

答案 0 :(得分:2)

作为程序作者,您需要了解相对路径。使用相对路径,您必须始终清楚它相对于哪个。 “源文件目录”是一个可怕的参考点,因为它在运行时不存在。

是相对于当前(=工作)目录的路径吗?然后,这超出了CMake的控制范围,您必须正确启动程序。出于测试目的,您可以设置测试属性WORKING_DIRECTORY

是否是相对于可执行位置的路径?如果是这样,您可以通过其RNTIME_OUTPUT_DIRECTORY属性定位可执行文件,和/或使用file(COPY)configure_file(COPYONLY)将资源复制到正确的位置。