4

-fmodules次の簡単なテスト ケース ファイルは、以下に示すコマンドを使用して でコンパイルすると、Clang の github ミラーからの「master」のヒントでコンパイル時エラーが発生します。これは、Clang の新しい実験的なモジュール機能のバグなのか、標準ライブラリのモジュール マップの実装に問題があるのか​​ 、それとも何か間違っているのでしょうか。コマンドに追加すると、エラーが引き続き表示-fbuiltin-module-mapされます。stdint.h興味深いことに、 に置き換えると、エラーは表示されなくなりましたcstdint

#include <stdint.h>
uint64_t foo;

エラーメッセージを含む私のコンパイルコマンドは次のとおりです。

anhall@leviathan: /Users/anhall/impersonal/code/llvm-reflexpr/install/bin/clang++ -o module-uint64_t-test.o -c module-uint64_t-test.cpp --std=c++1z -fmodules
module-uint64_t-test.cpp:3:1: error: missing '#include <_types/_uint64_t.h>'; declaration of 'uint64_t' must be imported from module 'Darwin.POSIX._types._uint64_t' before it is
      required
uint64_t foo;
^
/usr/include/_types/_uint64_t.h:31:28: note: previous declaration is here
typedef unsigned long long uint64_t;

私が使用しているビルドに関する情報: Matus Chochlik の github Clang ミラーのフォークからのものです。しかし、元のclang gitミラーの(当時の)「マスター」のヘッドに対応するコミットに設定されています(つまり、Matus Chochlikの機能「reflexpr」ブランチからのコミットは含まれていません):

anhall@leviathan: /Users/anhall/impersonal/code/llvm-reflexpr/install/bin/clang++ -v
clang version 4.0.0 (https://github.com/matus-chochlik/clang.git 1fa85026bfc23f5cda0b89598bd2056b817ae9d4) (https://github.com/llvm-mirror/llvm.git 069db88a3b2cae52023664fdd30378d3adc26566)
Target: x86_64-apple-darwin15.6.0
Thread model: posix
InstalledDir: /Users/anhall/impersonal/code/llvm-reflexpr/install/bin

(注: これはバグではないかと疑って、LLVM 管理者にも上記のレポートを電子メールで送信しました。返信があり、ログインしてくれたら、LLVM Bugzilla にファイルするつもりです。しかし、ここにも投稿すると思いました。私が間違っている場合、または Clang の C++1z+ モジュールのサポートに取り組んでいる人にとって興味深い場合)

編集1:

コンパイル コマンドラインに を追加すると、Clang の別のビルドのディレクトリではなく、-v実際にビルドのディレクトリを検索していることがわかります。次に例を示します。include

#include "..." search starts here:
#include <...> search starts here:
 /Users/anhall/impersonal/code/llvm-reflexpr/install/bin/../include/c++/v1
 /usr/local/include
 /Users/anhall/impersonal/code/llvm-reflexpr/install/bin/../lib/clang/4.0.0/include
 /usr/include
 /System/Library/Frameworks (framework directory)
 /Library/Frameworks (framework directory)
End of search list.

/usr/local/include問題が Clang ビルドのヘッダーとOS X システム ヘッダー間の相互作用であるかどうかはわかりません。/usr/include

4

1 に答える 1