我有一个用 CMake 构建的项目,它使用 Catch2 进行单元测试。一些单元测试练习代码从这样的文件中加载数据:
std::string resource_dir = "TEST_CWD/resources/";
std::ifstream infile{resource_dir + "datafile.txt"}
问题是如何正确获取 的值TEST_CWD
。
目录结构很简单(不是一成不变的):
my_project/
test/
resources/datafile.txt
loader_test.cpp
留空TEST_CWD
有时会起作用,但在通过 IDE 运行测试时会中断。使用绝对路径设置环境变量也可以,但会在其他机器上中断。同样,强制所有用户手动设置环境变量对用户不友好。
在 CMake 项目中指定相对文件路径的好方法是什么?