Skip to content

Support msstl modules for clang#6182

Merged
waruqi merged 6 commits intoxmake-io:devfrom
star-hengxing:clang
Mar 7, 2025
Merged

Support msstl modules for clang#6182
waruqi merged 6 commits intoxmake-io:devfrom
star-hengxing:clang

Conversation

@star-hengxing
Copy link
Contributor

close #6181 #5956

@waruqi waruqi requested a review from Arthapz March 1, 2025 15:48
@star-hengxing
Copy link
Contributor Author

The Windows-2022 ci environment only includes clang18. If we switch to Windows-2025 or use the Scoop package manager, we can use clang19.

@waruqi
Copy link
Member

waruqi commented Mar 2, 2025

如果有版本限制,最好加上版本检测。给个提示

ci 上如果有了 2025 可以把 2022 那个切一下。

@Issues-translate-bot
Copy link

Bot detected the issue body's language is not English, translate it automatically.


If there is a version restriction, it is best to add version detection. Give a reminder

If you have 2025 on ci, you can cut the 2022 one.

@waruqi
Copy link
Member

waruqi commented Mar 7, 2025

这边试了下,好像还是有点问题,clang-cl 编译成功了,也没报错,但是还是没生成 my_module.pcm

PS D:\projects\personal\xmake\tests\projects\c++\modules\stdmodules> xmake -rv -j1
[  0%]: <stdmodules> generating.module.deps test\test.cpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -x c++ -c test\test.cpp -o build\.objs\stdmodules\windows\x64\release\test\test.cpp.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[  0%]: <stdmodules> generating.module.deps src\my_module.mpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -x c++ -c src\my_module.mpp -o build\.objs\stdmodules\windows\x64\release\src\my_module.mpp.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[  0%]: <stdmodules> generating.module.deps C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.44.34823\modules\std.ixx
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -x c++ -c "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.ixx" -o build\.objs\stdmodules\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[  0%]: <stdmodules> generating.module.deps C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.44.34823\modules\std.compat.ixx
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -x c++ -c "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.compat.ixx" -o build\.objs\stdmodules\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.compat.ixx.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[  0%]: <mod> generating.module.deps src\my_module.cpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -x c++ -c src\my_module.cpp -o build\.objs\mod\windows\x64\release\src\my_module.cpp.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[  0%]: <mod> generating.module.deps src\my_module.mpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -x c++ -c src\my_module.mpp -o build\.objs\mod\windows\x64\release\src\my_module.mpp.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[  0%]: <mod> generating.module.deps C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.44.34823\modules\std.ixx
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -x c++ -c "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.ixx" -o build\.objs\mod\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[  0%]: <mod> generating.module.deps C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.44.34823\modules\std.compat.ixx
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -x c++ -c "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.compat.ixx" -o build\.objs\mod\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.compat.ixx.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[ 18%]: <mod> compiling.module.release std
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -x c++-module -fmodule-output=build\.gens\mod\windows\x64\release\rules\bmi\cache\modules\81262397\std.pcm -Wno-include-angled-in-module-purview -Wno-reserved-module-identifier -Fobuild\.objs\mod\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.ixx"
[ 25%]: <mod> compiling.module.release my_module
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=std=build\.gens\mod\windows\x64\release\rules\bmi\cache\modules\81262397\std.pcm -x c++-module -fmodule-output=build\.gens\mod\windows\x64\release\rules\bmi\cache\modules\81262397\my_module.pcm -Fobuild\.objs\mod\windows\x64\release\src\my_module.mpp.obj src\my_module.mpp
[ 37%]: compiling.release src\my_module.cpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=my_module=build\.gens\mod\windows\x64\release\rules\bmi\cache\modules\81262397\my_module.pcm -fmodule-file=std=build\.gens\mod\windows\x64\release\rules\bmi\cache\modules\81262397\std.pcm -Fobuild\.objs\mod\windows\x64\release\src\my_module.cpp.obj src\my_module.cpp
[ 43%]: archiving.release mod.lib
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\bin\\HostX64\\x64\\link.exe" -lib -nologo -machine:x64 /opt:ref /opt:icf -out:build\windows\x64\release\mod.lib build\.objs\mod\windows\x64\release\src\my_module.cpp.obj build\.objs\mod\windows\x64\release\src\my_module.mpp.obj build\.objs\mod\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj
[ 68%]: <stdmodules> compiling.module.release std
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -x c++-module -fmodule-output=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\std.pcm -Wno-include-angled-in-module-purview -Wno-reserved-module-identifier -Fobuild\.objs\stdmodules\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.ixx"
[ 75%]: <stdmodules> compiling.bmi.release my_module
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=std=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\std.pcm -x c++-module --precompile -Fobuild\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\my_module.pcm src\my_module.mpp
[ 87%]: compiling.release test\test.cpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=my_module=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\my_module.pcm -fmodule-file=std=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\std.pcm -Fobuild\.objs\stdmodules\windows\x64\release\test\test.cpp.obj test\test.cpp
error: test\test.cpp(3,1): fatal error: module file 'build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\my_module.pcm' not found: module file not found
    3 | import my_module;
      | ^
1 error generated.
D:\projects\personal\xmake\tests\projects\c++\modules\stdmodules>dir build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\

2025/03/07  09:47    <DIR>          .
2025/03/07  09:47    <DIR>          ..
2025/03/07  10:02        38,971,056 std.pcm

D:\projects\personal\xmake\tests\projects\c++\modules\stdmodules>clang-cl -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=std=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\std.pcm -x c++-module --precompile -Fobuild\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\my_module.pcm src\my_module.mpp

D:\projects\personal\xmake\tests\projects\c++\modules\stdmodules>dir build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\

2025/03/07  09:47    <DIR>          .
2025/03/07  09:47    <DIR>          ..
2025/03/07  10:02        38,971,056 std.pcm

@Issues-translate-bot
Copy link

Bot detected the issue body's language is not English, translate it automatically.


After trying this, it seems that there is still some problem. The clang-cl compiled successfully and there is no error, but my_module.pcm is still not generated

PS D:\projects\personal\xmake\tests\projects\c++\modules\stdmodules> xmake -rv -j1
[ 0% ]: <stdmodules> generating.module.deps test\test.cpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -x c++ -c test\test.cpp -o build\.objs\stdmodules\windows\x64\release\test\test.cpp.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[ 0% ]: <stdmodules> generating.module.deps src\my_module.mpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -x c++ -c src\my_module.mpp -o build\.objs\stdmodules\windows\x64\release\src\my_module.mpp.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[ 0% ]: <stdmodules> generating.module.deps C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.44.34823\modules\std.ixx
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -x c++ -c "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.ixx" -o build\.objs\stdmodules\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[ 0% ]: <stdmodules> generating.module.deps C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.44.34823\modules\std.compat.ixx
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -x c++ -c "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.compat.ixx" -o build\.objs\stdmodules\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.compat.ixx.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[ 0% ]: <mod> generating.module.deps src\my_module.cpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -x c++ -c src\my_module.cpp -o build\.objs\mod\windows\x64\release\src\my_module.cpp.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[ 0% ]: <mod> generating.module.deps src\my_module.mpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -x c++ -c src\my_module.mpp -o build\.objs\mod\windows\x64\release\src\my_module.mpp.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[ 0% ]: <mod> generating.module.deps C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.44.34823\modules\std.ixx
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -x c++ -c "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.ixx" -o build\.objs\mod\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[ 0% ]: <mod> generating.module.deps C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.44.34823\modules\std.compat.ixx
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -x c++ -c "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.compat.ixx" -o build\.objs\mod\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.compat.ixx.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[18%]: <mod> compiling.module.release std
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -x c++-module -fmodule-output=build\.gens\mod\windows\x64\release\rules\bmi\cache\modules\81262397\std.pcm -Wno-include-angled-in-module-purview -Wno-reserved-module-identifier -Fobuild\.objs\mod\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.ixx"
building build\.objs\mod\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj
build end true
[ 25% ]: <mod> compiling.module.release my_module
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=std=build\.gens\mod\windows\x64\release\rules\bmi\cache\modules\81262397\std.pcm -x c++-module -fmodule-output=build\.gens\mod\windows\x64\release\rules\bmi\cache\modules\81262397\my_module.pcm -Fobuild\.objs\mod\windows\x64\release\src\my_module.mpp.objs\my_module.mpp
building build\.objs\mod\windows\x64\release\src\my_module.mpp.obj
build end true
[ 37% ]: compiling.release src\my_module.cpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=my_module=build\.gens\mod\windows\x64\release\rules\bmi\cache\modules\81262397\my_module.pcm -fmodule-file=std=build\.gens\mod\windows\x64\release\rules\bmi\cache\modules\81262397\std.pcm -Fobuild\.objs\mod\windows\x64\release\src\my_module.cpp.obj src\my_module.cpp
[43%]: archive.release mod.lib
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\bin\\HostX64\x64\\link.exe" -lib -nologo -machine:x64 /opt:ref /opt:icf -out:build\windows\x64\release\mod.lib build\.objs\mod\windows\x64\release\src\my_module.cpp.obj build\.objs\mod\windows\x64\release\src\my_module.mpp.obj build\.objs\mod\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj
[ 68% ]: <stdmodules> compiling.module.release std
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -x c++-module -fmodule-output=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\std.pcm -Wno-include-angled-in-module-purview -Wno-reserved-module-identifier -Fobuild\.objs\stdmodules\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.ixx"
building build\.objs\stdmodules\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj
build end true
[ 75% ]: <stdmodules> compiling.bmi.release my_module
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=std=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\std.pcm -x c++-module --precompile -Fobuild\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\my_module.pcm src\my_module.mpp
building build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\my_module.pcm
build end false
[87%]: compiling.release test\test.cpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=my_module=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\my_module.pcm -fmodule-file=std=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\std.pcm -Fobuild\.objs\stdmodules\windows\x64\release\test\test.cpp.obj test\test.cpp
error: test\test.cpp(3,1): fatal error: module file 'build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\my_module.pcm' not found: module file not found
    3 | import my_module;
      | ^
1 error generated.
D:\projects\personal\xmake\tests\projects\c++\modules\stdmodules>dir build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\

2025/03/07 09:47 <DIR> .
2025/03/07 09:47 <DIR> ..
2025/03/07 10:02 38,971,056 std.pcm

D:\projects\personal\xmake\tests\projects\c++\modules\stdmodules>clang-cl -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=std=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\std.pcm -x c++-module --precompile -Fobuild\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\my_module.pcm src\my_module.mpp

D:\projects\personal\xmake\tests\projects\c++\modules\stdmodules>dir build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\

2025/03/07 09:47 <DIR> .
2025/03/07 09:47 <DIR> ..
2025/03/07 10:02 38,971,056 std.pcm

@waruqi
Copy link
Member

waruqi commented Mar 7, 2025

这边试了下,好像还是有点问题,clang-cl 编译成功了,也没报错,但是还是没生成 my_module.pcm

PS D:\projects\personal\xmake\tests\projects\c++\modules\stdmodules> xmake -rv -j1
[  0%]: <stdmodules> generating.module.deps test\test.cpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -x c++ -c test\test.cpp -o build\.objs\stdmodules\windows\x64\release\test\test.cpp.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[  0%]: <stdmodules> generating.module.deps src\my_module.mpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -x c++ -c src\my_module.mpp -o build\.objs\stdmodules\windows\x64\release\src\my_module.mpp.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[  0%]: <stdmodules> generating.module.deps C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.44.34823\modules\std.ixx
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -x c++ -c "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.ixx" -o build\.objs\stdmodules\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[  0%]: <stdmodules> generating.module.deps C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.44.34823\modules\std.compat.ixx
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -x c++ -c "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.compat.ixx" -o build\.objs\stdmodules\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.compat.ixx.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[  0%]: <mod> generating.module.deps src\my_module.cpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -x c++ -c src\my_module.cpp -o build\.objs\mod\windows\x64\release\src\my_module.cpp.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[  0%]: <mod> generating.module.deps src\my_module.mpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -x c++ -c src\my_module.mpp -o build\.objs\mod\windows\x64\release\src\my_module.mpp.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[  0%]: <mod> generating.module.deps C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.44.34823\modules\std.ixx
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -x c++ -c "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.ixx" -o build\.objs\mod\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[  0%]: <mod> generating.module.deps C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.44.34823\modules\std.compat.ixx
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -x c++ -c "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.compat.ixx" -o build\.objs\mod\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.compat.ixx.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[ 18%]: <mod> compiling.module.release std
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -x c++-module -fmodule-output=build\.gens\mod\windows\x64\release\rules\bmi\cache\modules\81262397\std.pcm -Wno-include-angled-in-module-purview -Wno-reserved-module-identifier -Fobuild\.objs\mod\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.ixx"
[ 25%]: <mod> compiling.module.release my_module
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=std=build\.gens\mod\windows\x64\release\rules\bmi\cache\modules\81262397\std.pcm -x c++-module -fmodule-output=build\.gens\mod\windows\x64\release\rules\bmi\cache\modules\81262397\my_module.pcm -Fobuild\.objs\mod\windows\x64\release\src\my_module.mpp.obj src\my_module.mpp
[ 37%]: compiling.release src\my_module.cpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=my_module=build\.gens\mod\windows\x64\release\rules\bmi\cache\modules\81262397\my_module.pcm -fmodule-file=std=build\.gens\mod\windows\x64\release\rules\bmi\cache\modules\81262397\std.pcm -Fobuild\.objs\mod\windows\x64\release\src\my_module.cpp.obj src\my_module.cpp
[ 43%]: archiving.release mod.lib
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\bin\\HostX64\\x64\\link.exe" -lib -nologo -machine:x64 /opt:ref /opt:icf -out:build\windows\x64\release\mod.lib build\.objs\mod\windows\x64\release\src\my_module.cpp.obj build\.objs\mod\windows\x64\release\src\my_module.mpp.obj build\.objs\mod\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj
[ 68%]: <stdmodules> compiling.module.release std
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -x c++-module -fmodule-output=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\std.pcm -Wno-include-angled-in-module-purview -Wno-reserved-module-identifier -Fobuild\.objs\stdmodules\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.ixx"
[ 75%]: <stdmodules> compiling.bmi.release my_module
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=std=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\std.pcm -x c++-module --precompile -Fobuild\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\my_module.pcm src\my_module.mpp
[ 87%]: compiling.release test\test.cpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=my_module=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\my_module.pcm -fmodule-file=std=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\std.pcm -Fobuild\.objs\stdmodules\windows\x64\release\test\test.cpp.obj test\test.cpp
error: test\test.cpp(3,1): fatal error: module file 'build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\my_module.pcm' not found: module file not found
    3 | import my_module;
      | ^
1 error generated.
D:\projects\personal\xmake\tests\projects\c++\modules\stdmodules>dir build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\

2025/03/07  09:47    <DIR>          .
2025/03/07  09:47    <DIR>          ..
2025/03/07  10:02        38,971,056 std.pcm

D:\projects\personal\xmake\tests\projects\c++\modules\stdmodules>clang-cl -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=std=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\std.pcm -x c++-module --precompile -Fobuild\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\my_module.pcm src\my_module.mpp

D:\projects\personal\xmake\tests\projects\c++\modules\stdmodules>dir build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\

2025/03/07  09:47    <DIR>          .
2025/03/07  09:47    <DIR>          ..
2025/03/07  10:02        38,971,056 std.pcm

好像 clang 还是有点bug ,去掉子目录,就能生成。

clang-cl -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=std=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\std.pcm -x c++-module --precompile -Fomy_module.pcm src\my_module.mpp

@Issues-translate-bot
Copy link

Bot detected the issue body's language is not English, translate it automatically.


I tried it here, and it seems that there is still some problem. The clang-cl compiled successfully and there was no error, but my_module.pcm was not generated

PS D:\projects\personal\xmake\tests\projects\c++\modules\stdmodules> xmake -rv -j1
[ 0% ]: <stdmodules> generating.module.deps test\test.cpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -x c++ -c test\test.cpp -o build\.objs\stdmodules\windows\x64\release\test\test.cpp.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[ 0% ]: <stdmodules> generating.module.deps src\my_module.mpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -x c++ -c src\my_module.mpp -o build\.objs\stdmodules\windows\x64\release\src\my_module.mpp.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[ 0% ]: <stdmodules> generating.module.deps C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.44.34823\modules\std.ixx
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -x c++ -c "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.ixx" -o build\.objs\stdmodules\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[ 0% ]: <stdmodules> generating.module.deps C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.44.34823\modules\std.compat.ixx
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -x c++ -c "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.compat.ixx" -o build\.objs\stdmodules\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.compat.ixx.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[ 0% ]: <mod> generating.module.deps src\my_module.cpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -x c++ -c src\my_module.cpp -o build\.objs\mod\windows\x64\release\src\my_module.cpp.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[ 0% ]: <mod> generating.module.deps src\my_module.mpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -x c++ -c src\my_module.mpp -o build\.objs\mod\windows\x64\release\src\my_module.mpp.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[ 0% ]: <mod> generating.module.deps C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.44.34823\modules\std.ixx
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -x c++ -c "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.ixx" -o build\.objs\mod\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[ 0% ]: <mod> generating.module.deps C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.44.34823\modules\std.compat.ixx
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-scan-deps" --format=p1689 -- "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -x c++ -c "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.compat.ixx" -o build\.objs\mod\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.compat.ixx.obj --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG
[ 18% ]: <mod> compiling.module.release std
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -x c++-module -fmodule-output=build\.gens\mod\windows\x64\release\rules\bmi\cache\modules\81262397\std.pcm -Wno-include-angled-in-module-purview -Wno-reserved-module-identifier -Fobuild\.objs\mod\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.ixx"
[ 25% ]: <mod> compiling.module.release my_module
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=std=build\.gens\mod\windows\x64\release\rules\bmi\cache\modules\81262397\std.pcm -x c++-module -fmodule-output=build\.gens\mod\windows\x64\release\rules\bmi\cache\modules\81262397\my_module.pcm -Fobuild\.objs\mod\windows\x64\release\src\my_module.mpp.objs\my_module.mpp
[ 37% ]: compiling.release src\my_module.cpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=my_module=build\.gens\mod\windows\x64\release\rules\bmi\cache\modules\81262397\my_module.pcm -fmodule-file=std=build\.gens\mod\windows\x64\release\rules\bmi\cache\modules\81262397\std.pcm -Fobuild\.objs\mod\windows\x64\release\src\my_module.cpp.obj src\my_module.cpp
[ 43%]: archive.release mod.lib
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\bin\\HostX64\x64\\link.exe" -lib -nologo -machine:x64 /opt:ref /opt:icf -out:build\windows\x64\release\mod.lib build\.objs\mod\windows\x64\release\src\my_module.cpp.obj build\.objs\mod\windows\x64\release\src\my_module.mpp.obj build\.objs\mod\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj
[ 68% ]: <stdmodules> compiling.module.release std
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -x c++-module -fmodule-output=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\std.pcm -Wno-include-angled-in-module-purview -Wno-reserved-module-identifier -Fobuild\.objs\stdmodules\windows\x64\release\7c4e750fd48c406eb9e94f5d0a3cc389\std.ixx.obj "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.44.34823\\modules\\std.ixx"
[ 75% ]: <stdmodules> compiling.bmi.release my_module
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=std=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\std.pcm -x c++-module --precompile -Fobuild\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\my_module.pcm src\my_module.mpp
[ 87%]: compiling.release test\test.cpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\Llvm\\x64\bin\\clang-cl" -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=my_module=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\my_module.pcm -fmodule-file=std=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\std.pcm -Fobuild\.objs\stdmodules\windows\x64\release\test\test.cpp.obj test\test.cpp
error: test\test.cpp(3,1): fatal error: module file 'build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\my_module.pcm' not found: module file not found
3 | import my_module;
| ^
1 error generated.
D:\projects\personal\xmake\tests\projects\c++\modules\stdmodules>dir build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\

2025/03/07 09:47 <DIR> .
2025/03/07 09:47 <DIR> ..
2025/03/07 10:02 38,971,056 std.pcm

D:\projects\personal\xmake\tests\projects\c++\modules\stdmodules>clang-cl -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=std=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\std.pcm -x c++-module --precompile -Fobuild\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\my_module.pcm src\my_module.mpp

D:\projects\personal\xmake\tests\projects\c++\modules\stdmodules>dir build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\

2025/03/07 09:47 <DIR> .
2025/03/07 09:47 <DIR> ..
2025/03/07 10:02 38,971,056 std.pcm

It seems that clang is still a bit buggy, and you can generate it by removing the subdirectory.

D:\projects\personal\xmake\tests\projects\c++\modules\stdmodules>clang-cl -c --target=x86_64-pc-windows-msvc -O2 -std:c++latest /EHsc -DNDEBUG -fmodule-file=std=build\.gens\stdmodules\windows\x64\release\rules\bmi\cache\modules\a3c3afdf\std.pcm -x c++-module --precompile -Fomy_module.pcm src\my_module.mmpp

@waruqi
Copy link
Member

waruqi commented Mar 7, 2025

ci上却过了,先这样了。

@Issues-translate-bot
Copy link

Bot detected the issue body's language is not English, translate it automatically.


But I passed the CI, so I will do it first.

@waruqi waruqi merged commit 1c6af0d into xmake-io:dev Mar 7, 2025
22 checks passed
@waruqi waruqi added this to the v2.9.9 milestone Mar 7, 2025
@star-hengxing star-hengxing deleted the clang branch March 7, 2025 09:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for ms-stl std modules with clang

3 participants