一、模块的引入
在c++20中就引入import这个模块应用机制了。但限于编译器和环境的滞后性,短时间内不大可能广泛的应用起来。但这不代表着开发者可以忽视它,一个新技术的出现,不管最终的结果如何。都需要在实践中进行应用并反馈结果。那么在实际编程中如何使用这种机制呢,下面就以一个最简单的程序来给大家演示一下,让大家有一个逐步接受的过程。
开发的环境使用了ubuntu25.10,程序中默认的gcc的版本是gcc15.2,编译默认的C++标准为c++20。如果缺少相关的库或者编译环境限制,请根据提示自行安装即可,此处不再赘述。
二、一个最简单的程序
照老样子,先搞一个最简单的程序来看:
c
import std;
int main(){
std::println("this is first test!");
std::cout<<"test"<<std::endl;
return 0;
}
这个程序非常简单,但是,如果使用传统的编译方法如下面的方式:
g++ -o test importDemo.cpp
则会产生下面的错误:
error:'import' does not name a type
这说明用传统的编译的方法在目前是无法满足使用模块编译的情况的。
三、编译和处理
那么如何才能正确编译上面的代码呢?可以试着使用相关的编译命令:
g++ -o test importDemo.cpp -std=c++23 -fmodules
但是会报下面的问题:
g++ -o test importDemo.cpp -std=c++23 -fmodules
In module imported at importDemo.cpp:1:1:
std: error: failed to read compiled module: 没有那个文件或目录
std: note: compiled module file is 'gcm.cache/std.gcm'
std: note: imports must be built before being imported
std: fatal error: returning to the gate for a mechanical issue
compilation terminated.
通过上面编译结果分析,发现是少了文件"gcm.cache/std.gcm",而这个文件是怎么才能得到呢?经过查找资料发现,需要提前编译一下:
g++ -std=c++23 -fmodules-ts -fsearch-include-path -c bits/std.cc
这个命令执行完成后,可以在当前目录中发现上面提到的文件以及一个std.o的文件。此时再使用"g++ -o test importDemo.cpp -std=c++23 -fmodules"则可以正确的编译程序了。然后执行编译后的程序则可以打印程序中的内容
四、总结
通过上面的一个最简单的基础入门的编译应用,大家可以很清楚的明白如何引入模块后的编译。通过这一简单的示例,大家就可以踏进C++模块开发的大门,开始自由的按照自己的意愿不断的学习和提升自己的能力。