問題タブ [cl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++ を構築する Bazel の「あいまいなシンボル」
バックグラウンド
私は、clを使用してBazelでC ++をコンパイルするWindowsビルドを使用しています。
ファイルのサブセット:
schriter.h
持ってい#include "unicode/utypes.h"
ます。
uri_utils.h
そしてb/cpp/src/strings/stringpiece.h
両方がありclass StringPiece
ます。third_party/icu/source/common/unicode/stringpiece.h
もっているclass U_COMMON_API StringPiece : public UMemory
a.cc
以下を参照しStringPiece
、以下を含みます。
a/BUILD
:
b/BUILD
:
third_party/icu/BUILD
:
問題
そのままでは、ビルドは次のようにthird_party/icu:common
失敗します。
third_party/icu/source/stubdata/stubdata.c(20): fatal error C1083: Cannot open include file: 'unicode/utypes.h': No such file or directory
に追加copts = ["/Ithird_party/icu/source/common",],
するthird_party/icu/BUILD
と、icu:common
ビルドされますが、ターゲットa
は次のエラーで失敗します。
third_party/icu/source/common/unicode/schriter.h(21): fatal error C1083: Cannot open include file: 'unicode/utypes.h': No such file or directory
代わりに を追加するincludes = ["source/common",],
と、icu:common
ビルドされますが、ターゲットは次のようにa
失敗します。
ソースは cmake を使用して正常にコンパイルされるため、ソースを変更する必要はありません。このビルドを正しく行うために BUILD ファイルを変更するにはどうすればよいですか? icu
のすべてがのヘッダーにアクセスできるようにし、 に依存するターゲットにunicode
は公開しないようにするにはどうすればよいですか?unicode/stringpiece.h
icu