5

ドキュメントでは、CLang でのモジュールのサポートは部分的であると言われています。LLVM 12.0 の最近のリリースから Windows 64 ビットで CLang を使用しています。

通常のモジュールを使用することに成功しました(を介してインポートしますimport modulename;)。

しかし、ヘッダー ユニット モジュールを作成して使用することはできませんでしたimport "header.hpp";。例でそれを行う方法を提案できますか?

ヘッダー ユニットを試すために、次のおもちゃのファイルを作成しました。

こんにちは.hpp :

#include <vector>

use.cpp :

import "hello.hpp";

int main() {
    std::vector<int> v(123);
}

次に、ヘッダーユニットhello.hppをPCMファイルに正常にコンパイルしました(希望します):

clang++ -std=c++20 -Xclang -emit-header-module -I. hello.hpp -o hello.pcm

コマンドはエラーなしで実行され、生成されhello.pcmました。上記のコマンドを-oフラグなしで実行すると、ファイル hello.hpp.gchが作成されます。

次に、 をコンパイルしようとしましuse.cppたが、成功しませんでした。どういうわけか、ヘッダー ユニットを認識できないか、対応する が見つかりませんhello.pcm。ヘッダーユニットであることをコンパイラに示す特別なフラグがいくつか欠けていると思います。次のコマンドが使用されました。

clang++ -std=c++20 -fprebuilt-module-path=. -fmodule-file=hello.hpp=hello.pcm -I. use.cpp

コンパイルエラーが発生しました:

use.cpp:1:8: error: header file "hello.hpp" (aka './hello.hpp') cannot be imported because it is not known to be a header unit
import "hello.hpp";
       ^

MSVC では、通常のモジュールとヘッダー ユニット モジュールを使用することに成功しました。しかし、CLang ではありません。それを手伝ってもらえますか?または、CLang ヘッダー ユニットがまだサポートされていない可能性があることを教えてください。

4

1 に答える 1