私は(基本)C++プロジェクトを持っている:実行可能example.cppがdata/
ディレクトリからいくつかのデータファイルを使用しC++ Bazelプロジェクト
├── bin
│ ├── BUILD
│ ├── example.cpp
├── data
│ └── someData.txt
└── WORKSPACE
:
#include <fstream>
#include <iostream>
int main()
{
std::ifstream in("data/someData.txt");
if (!in)
{
std::cerr << "Can not open file!";
return EXIT_FAILURE;
}
std::string message;
if (!(in >> message))
{
std::cerr << "Can not read file content!";
return EXIT_FAILURE;
}
std::cout << message << std::endl;
return EXIT_SUCCESS;
}
をマイBazelの設定は最小です:
- WORKSPACE:空のファイル
- ビン/ビルドが:
cc_binary(name = "example",srcs = ["example.cpp"])
- データ/ someData.txtは:
問題はBazelは特別な場所にすべてのこれらのファイルを移動していることであるHello_world!
行が含まれています。特有例 executablで
.
├── bazel-Bazel_with_Data -> ...
├── bazel-bin -> ...
├── bazel-genfiles -> ...
├── bazel-out -> ...
├── bazel-testlogs -> ...
bazel run bin:example
が印刷されます:
INFO: Analysed target //bin:example (0 packages loaded).
INFO: Found 1 target...
Target //bin:example up-to-date:
bazel-bin/bin/example
INFO: Elapsed time: 0.101s, Critical Path: 0.00s
INFO: Build completed successfully, 1 total action
INFO: Running command line: bazel-bin/bin/example
Can not open file!ERROR: Non-zero return code '1' from command: Process exited with status 1
質問がこれをどのように管理することであるeがデータ/ someData.txtファイルが見つかりませんでしょうか?
は私がデータ/ someData.txtファイルを見つけることができるようにするために実行可能例をしたいです。
GitHubリポジトリからサンプルを実行するために、* WINDOWS *で実行されるbazelを使用しようとしましたか? 試してみると、https://github.com/vincent-picaud/Bazel_with_Data/blob/master/bin/example.cpp#L6で開かれたストリームは失敗します。 しかし、Linuxでプロジェクトを実行しているbazelは機能します。 – thinlizzy
@thinlizzyフィードバックに感謝します。私はWindowsの下でそれをテストしていません。それが動作しない場合、私は私のポストを更新します。 –
@thinlizzy多分それはちょうどパス "data/someData.txt"です。私は、Windowsは "data \ someData.txt"を期待していると思います。試しましたか? (私はWindowsにアクセスできない、私はLinux上でしか動かない) –