在使用cmake构建时,如何正确使用源代码中的文件路径(相对于项目根目录)?
详细信息: 我有一个基本上这种布局的cmake项目:
project
|-src/
| |-main.c
| |-CMakeLists.c
|-dat/
| |-foo.txt
|-build/
main.c
基本上包含一个main
函数,它试图打开一个相对于项目根目录指定的文件,即dat/foo.txt
。使用cmake构建时,二进制文件位于project/build/src
,这也是运行程序时的工作目录。 dat/foo.txt
被解释为project/build/src/dat/foo.txt
,显然不可用。可以使用../../dat/foo.txt
替换源文件中的路径,但这并不是一个干净而且很好的解决方案。
这个stackoverflow post表示没有简单的方法来设置由cmake执行的代码的工作目录(此外,答案是指Visual Studio的解决方案,我没有使用它)。
此问题的最佳做法是什么?