そこで、シミュレーションの単体テストを実行するために、bazel と googletest フレームワークを使用したいと考えています。このために、サンプル入力ファイルとサンプル出力ファイルが必要です。ソース ファイル、テスト ファイル、またはリポジトリ内の任意のファイルの絶対パスを取得したいので、そこから入力ファイルへの相対パスを作成できます。
例えば:
std::string path = __SOME_PATH_IN_REPO__+"/../inputfiles/input.txt";
std::fstream infile(path);
そのため、多くの検索を行った後、次のように bazel の BUILD ファイルから直接定数を定義できることがわかりました。
cc_test(
name = "gtest_capabilities",
srcs = [
"testing/pwdTest.cpp",
],
deps = [
"@gtest//:main",
],
copts = [
"-D __ABSOLUTE_PATH__=$(workspace)",
],
)
重要な行は、私が使用している copts にあります$(workspace)
。
私はここで、このようにcopts(または代わりに)を指定できることを読みましたdefines
が、これは機能します。最初のページがリンクしている
このページは、次のような環境変数を使用できることを教えてくれます: $(FOO)また、実行して利用可能なすべての環境変数を取得
できることも教えてくれます。bazel info --show_make_env
私がそれを実行すると、ワークスペースを含む環境変数の大きなリストが他の多くの隣に表示されます。
ここで問題が発生します。
しかし、$(workspace)
変数を使用すると、bazel は $(workspace) が定義されていないことを教えてくれます。
$PWD 変数を使用できれば私もうまくいきますが、これもうまくいきませんでした。
誰かが私を助けてくれることを願っています。
ごきげんよう、
ロミオ
編集:
bazel ビルド ファイルで 'data' オプションを使用するようになりました。これは主に機能します