最初に結論
clang++のオプションを以下のように指定してコンパイルさせます。
# mod.ixxをC++モジュールとして扱い、mod.pcmとしてプリコンパイルする
clang++ -x c++-module mod.ixx --std=c++23 --precompile -o mod.pcm
# プリコンパイルしたmod.pcmとリンクさせて、main.cppをコンパイルする。
clang++ main.cpp -fuse-ld=lld --std=c++23 -fmodule-file=mod=mod.pcm mod.pcm -o main.exe
概要
通常、clang++のみでC++開発環境を完結できる場合、.cppm
でモジュールファイルを作成します。しかし、何らかの理由で、Visual Studioの.ixx
をプリコンパイルしたいケースがあると思います。
通常、clang++ mod.cppm --std=c++23 --precompile -o mod.pcm
のように入力すると、clang++がmod.cppm
を自動的にC++モジュールとして認識し、プリコンパイルしてくれます。しかし、mod.cppm
がmod.ixx
という名前になると何故か認識してくれず、clang++: warning: mod.ixx: 'linker' input unused [-Wunused-command-line-argument]
という警告が出力されて、mod.pcm
が出力されません。
上述のようなオプションを指定することでプリコンパイルできるようになります。