我希望有一个只包含模块中的声明的文件和一个或多个包含定义的文件。
根据How to split a module into multiple files的说法(以及12点04分的https://youtu.be/nP8QcvPpGeM ),我应该像这样分割我的文件:
Log.cpp:
export module Log;
int i = 0;
export void Log();Log_imp.cpp:
module Log;
void Log() {
std::cerr << "This is a log and i=" << i << "\n";
}我可以分别用g++-11 -std=c++20 -fmodules-ts -c Log.cpp和g++-11 -std=c++20 -fmodules-ts -c Log_imp.cpp进行构建。
我的主程序只是导入日志模块并调用Log()函数。请注意,我必须同时链接Log.o和Log_imp.o,否则就会得到链接错误。
是否可以在不构建静态库的情况下为单个模块创建单个对象文件?如果没有,那么应该将模块链接到静态库中,还是保留多个.o文件?
发布于 2022-04-30 20:54:37
模块基本上是正交的连接过程。每个模块文件都是自己的翻译单元,因此将产生自己的对象文件。您可以将它们组合成一个库(或一个single object file),但否则,您将不得不链接到所有这样的对象文件。
https://stackoverflow.com/questions/72071734
复制相似问题