	. Multiple interfaces - multiple implementation files.
	
	. Project files
		. math.ixx
		. print.ixx
		. math_impl.cpp (Contains the implementation code for the module inferface file)
		. print_impl.cpp
		. main.cpp

	. Notes: 
		. One has to do the research to get the exact steps to follow to build with a specific IDE or compiler.
		. The steps and commands below are a result of my research and testing.
		. The information for Visual C++ is from Microsoft's documentation. It was relatively easy to find.
		. The information for the GCC compiler is scattered across the internet. I had to do a lot of digging to find it.
		. For Clang. I digested the information shared in their Standard C++ Modules documenation (https://clang.llvm.org/docs/StandardCPlusPlusModules.html) and repurposed it to compile the projects in this chapter.
		. The instructions for each compiler are shared below.
		
	. Compilation steps on 3 major compilers:
	
		. Visual C++ (Windows)
			. Create a console project and rename the file containing main to main.cpp
			. Set the standard to C++20
			. Right click on the solution name in Project Explorer and select add> Module
			. Add a module file named math.ixx and put in the code
			. Add a module file named print.ixx and put in the code
			. Add a new cpp file named math_impl.cpp and put in the code.
			. Add a new cpp file named print_impl.cpp and put in the code.
			. Put the code in the main.cpp file
			. Build and run the project.
			. If <iostream> can't be processed go to properties> C/C++> General and toggle `Scan Sources for Module Dependencies` to true.

			
		. GCC(13.2.0)
		    . g++ -fmodules-ts -x c++-system-header iostream
			. g++ -fmodules-ts -c -x c++ math.ixx
			. g++ -fmodules-ts -c -x c++ print.ixx
			. g++ -fmodules-ts -c math_impl.cpp
			. g++ -fmodules-ts -c print_impl.cpp
			. g++ -fmodules-ts main.cpp math.o print.o math_impl.o print_impl.o -o rooster.exe
			
        . Clang(16) - Windows - Winlibs - Use the command prompt
                . clang++ -std=c++20 -x c++-system-header iostream --precompile -o iostream.pcm
                . clang++ -std=c++20 -fmodule-file=iostream.pcm -x c++-module math.ixx --precompile -o math_stuff.pcm
                . clang++ -std=c++20 -x c++-module print.ixx --precompile -o print.pcm
                . clang++ -std=c++20 math_impl.cpp -fmodule-file=math_stuff=math_stuff.pcm -fmodule-file=print=print.pcm -fmodule-file=iostream.pcm -c -o math_impl.o
                . clang++ -std=c++20 -fmodule-file=iostream.pcm print_impl.cpp -fmodule-file=print=print.pcm -c -o print_impl.o
                . clang++ -std=c++20 -fmodule-file=iostream.pcm main.cpp -fprebuilt-module-path=. -c -o main.o
                . clang++ -std=c++20 math_stuff.pcm -c -o math_stuff.o
                . clang++ -std=c++20 print.pcm -c -o print.o
                . clang++ -std=c++20 main.o math_stuff.o print.o math_impl.o print_impl.o -o rooster
			
			
        . Clang(18) 
                . clang++ -std=c++20 -stdlib=libc++ -x c++-system-header iostream --precompile -o iostream.pcm
                . clang++ -std=c++20 -stdlib=libc++ -fmodule-file=iostream.pcm -x c++-module math.ixx --precompile -o math_stuff.pcm
                . clang++ -std=c++20 -stdlib=libc++ -x c++-module print.ixx --precompile -o print.pcm
                . clang++ -std=c++20 -stdlib=libc++ math_impl.cpp -fmodule-file=math_stuff=math_stuff.pcm -fmodule-file=print=print.pcm -fmodule-file=iostream.pcm -c -o math_impl.o
                . clang++ -std=c++20 -stdlib=libc++ -fmodule-file=iostream.pcm print_impl.cpp -fmodule-file=print=print.pcm -c -o print_impl.o
                . clang++ -std=c++20 -stdlib=libc++ -fmodule-file=iostream.pcm main.cpp -fprebuilt-module-path=. -c -o main.o
                . clang++ -std=c++20 -stdlib=libc++ math_stuff.pcm -c -o math_stuff.o
                . clang++ -std=c++20 -stdlib=libc++ print.pcm -c -o print.o
                . clang++ -std=c++20 -stdlib=libc++ main.o math_stuff.o print.o math_impl.o print_impl.o -o rooster
               
