這是一個我很想用的特性, 沒有 header files 還能編譯, 真的厲害, 不知道怎麼辦到的, c++ 的魔法越來越多了。
主要以 chatgpt 為主, 再搭配 google 找資料, 終於知道怎麼編譯 module。
descent@deb64:cpp_module$ g++ --version
g++ (Debian 13.2.0-12) 13.2.0
編譯之後會產生 gcm.cache 目錄。另外也有可能第一次編譯有錯, 再一次編譯就正常的情形, 所以有時候我搞不清楚是我寫錯還是編譯的問題。
測試了:
-
class
-
function
-
template function
-
使用標準程式庫
這樣大概就可以來用 module 了, 不過這樣就不能從 header files 知道有哪些 function, class, class member function 可用, 一定得寫文件了吧! 原本的 include 還是可以用。
ref:
C++20 Modules - 讓編譯加速吧 | C++ · 傳統與革新的空間
上面提到 compile error 的問題。
回覆刪除我參考 [c++ - How to use c++20 modules with GCC? - Stack Overflow](https://stackoverflow.com/a/76892451) 修改如下:
```
g++ -std=c++23 -fmodules-ts -x c++-system-header iostream -x c++-system-header cstdio
g++ -std=c++23 -fmodules-ts math_functions.cpp main.cpp -o math_program
```
好像就可以了。