所以我想使用bazel和googletest框架来运行模拟的单元测试 . 为此,我想要sample-inputfiles和sample-outputfiles . 我想获取源文件,测试文件或存储库中的任何文件的绝对路径,因此我可以创建从那里输入文件的相对路径 .
例如 . :
std::string path = __SOME_PATH_IN_REPO__+"/../inputfiles/input.txt";
std::fstream infile(path);
经过大量的搜索后,我发现你可以直接从BUILD文件中为bazel定义常量,如下所示:
cc_test(
name = "gtest_capabilities",
srcs = [
"testing/pwdTest.cpp",
],
deps = [
"@gtest//:main",
],
copts = [
"-D __ABSOLUTE_PATH__=$(workspace)",
],
)
重要的是在copts,我正在使用 $(workspace)
.
我读了here,您可以像这样指定copts(或者 defines
),这确实有效 .
This页面,第一页链接到,告诉我,我可以使用这样的环境变量:$(FOO)
它还告诉我,我可以运行 bazel info --show_make_env
来获取所有可用的环境变量 .
当我运行它时,我得到一个很大的环境变量列表,其中包含工作区,旁边有很多其他的 .
Now here comes the problem:
但是当我使用 $(workspace)
变量时,bazel告诉我,$(工作空间)没有定义 .
如果我可以使用$ PWD变量,我也会为我工作,但我也无法使用它 .
我希望有一个人可以帮助我 .
问候,
罗密欧
编辑:
我现在在bazel构建文件中使用'data'选项 . 这主要起作用
1 回答
呃,这是一个可怕的输出 . 基本上,
--show_make_env
将bazel info
和make变量的输出组合在一起,没有说明哪个是哪个 . 要查找make变量,您可以对输出进行区分以删除非make信息:这些是可用的make变量 .
您可以在测试中找到PWD,而不是使用
-D
进行硬编码吗?