C++ Modules 体验
环境
clang version 9.0.0 (tags/RELEASE_900/final 372316)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
代码
hello.mxx
export module hello;
export void hello();
hello.cxx
#include <iostream>
module hello;
void hello()
{
std::cout << "hello C++ Modules!\n";
}
main.cxx
import hello;
int main()
{
hello();
}
Makefile
CC=clang++ -std=c++2a -fmodules-ts
FLAG=-stdlib=libc++
hello: hello.pcm.o hello.o main.o
$(CC) $(FLAG) -o $@ hello.pcm.o main.o hello.o
main.o: main.cxx hello.pcm
$(CC) $(FLAG) -x c++ -o $@ -fmodule-file=hello=hello.pcm -c main.cxx
hello.o: hello.pcm hello.cxx
$(CC) $(FLAG) -x c++ -o $@ -fmodule-file=hello.pcm -c hello.cxx
hello.pcm.o: hello.pcm
$(CC) -o $@ -c hello.pcm
hello.pcm: hello.mxx
$(CC) $(FLAG) --precompile -x c++-module -o $@ hello.mxx
clean:
rm -f *.o *.pcm hello
结果
目前还不太行,即使是libc++
也没有直接能用的std.io
,所以不得不#include <iostream>
,而且编译太复杂了。