Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Bazel:本地访问附近的文件_C++_Bazel - Fatal编程技术网

C++ Bazel:本地访问附近的文件

C++ Bazel:本地访问附近的文件,c++,bazel,C++,Bazel,我想从cc文件读取附近的文件。我已经插入了data属性,但似乎在附近找不到data.txt 结构: ├── root │   ├── BUILD │   ├── data.txt │   └── main.cc └── WORKSPACE 在生成文件中: cc_binary( name = "test", srcs = ["main.cc"], data = ["data.txt"] ) 在main.cc文件中: #include <iostream> #include<f

我想从cc文件读取附近的文件。我已经插入了
data
属性,但似乎在附近找不到data.txt

结构:

├── root
│   ├── BUILD
│   ├── data.txt
│   └── main.cc
└── WORKSPACE
在生成文件中:

cc_binary(
name = "test",
srcs = ["main.cc"],
data = ["data.txt"]
)
在main.cc文件中:

#include <iostream>
#include<fstream>

using namespace std;

int main(){

ifstream myReadFile;
 myReadFile.open("data.txt");

 if (!myReadFile.good()){
  cout << "FILE not good!" << endl;
  return 1;
 }

cout << "FILE is good!" << endl;

return 0;

}
#包括
#包括
使用名称空间std;
int main(){
ifstreammyreadfile;
myReadFile.open(“data.txt”);
如果(!myReadFile.good()){

cout假设您是从顶级目录(包含
工作区的目录,使用
bazel build root:test
)生成的,并且您使用
bazel bin/root/test
运行代码,则该文件应指定为
root/data.txt
假设您是从顶级目录生成的(包含
WORKSPACE
的目录,使用
bazel build root:test
,并使用
bazel bin/root/test
运行代码,该文件应指定为
root/data.txt

您是对的。但是,应该有一种方法以包相关的方式访问文件。子项目不一定知道整个项目结构。我知道;但是bazel不是一个包管理工具,它是一个构建工具。大概,在您构建了所有内容之后,您会将这些文件移动到它们的最终目的地,这就是您的代码应该从中访问它们的地方。
data
参数的正常用例是用于测试的,您希望在其中指定一些测试f当您使用
bazel TEST
或类似的工具运行测试时,您可以从TEST_DATA_DIR环境变量获取顶级目录(查看文档).你是对的。但是,应该有一种以包相关的方式访问文件的方法。子项目不一定知道整个项目结构。我知道;但是bazel不是一个包管理工具,它是一个构建工具。大概,在构建完所有内容之后,你会将这些文件移动到它们的最终目标,而这就是你的代码所在应该从中访问它们。
数据
参数的正常使用情况是用于测试,您希望在其中指定一些测试文件,并且当您使用
bazel test
或类似工具运行测试时,您可以从test_data_DIR环境变量中获取顶级目录(查看文档)。