問題タブ [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.

0 投票する
1 に答える
175 参照

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.hicu