所以我想使用bazel和googletest框架来运行模拟的单元测试。为此,我想要有sample-inputfiles和sample-outputfiles。 我想获取源文件,测试文件或存储库中的任何文件的绝对路径,因此我可以创建一个从此处输入文件的相对路径。
如:如何在bazel/googletest中使用环境变量
std::string path = __SOME_PATH_IN_REPO__+"/../inputfiles/input.txt";
std::fstream infile(path);
所以很多搜索后,我发现,你可以定义常量直接从BUILD文件巴泽勒像这样:
cc_test(
name = "gtest_capabilities",
srcs = [
"testing/pwdTest.cpp",
],
deps = [
"@gtest//:main",
],
copts = [
"-D __ABSOLUTE_PATH__=$(workspace)",
],
)
重要的线是科普特人,我正在使用$(workspace)
。
我读here,你可以指定copts(或者defines
)这样的工作。
This页面,该页面的第一页的链接,告诉我,我可以使用环境变量是这样的:$(FOO)
它也告诉我,我可以运行bazel info --show_make_env
让所有速效环境变量。
当我运行它时,我得到一个大的环境变量列表,其中包含工作区,旁边的其他很多。
现在问题来了:
但是,当我使用$(workspace)
变量,bazel告诉我,$(工作区)没有定义。
我也会为我工作,如果我可以使用$ PWD变量,但我无法得到这个工作。
我希望有人能帮助我。
问候,
罗密欧
编辑:
我现在用在巴泽尔构建文件中的“数据”选项。这项工作主要是
是的,我的目标是在我的代码中获得PWD,但我花了一段时间试图找出一种跨平台的方式,但我没有找到一个好的方法。有人建议使用_ _FILE_ _,但它不能给我完整的路径。 –
http://stackoverflow.com/questions/2868680/what-is-a-cross-platform-way-to-get-the-current-directory? – kristina