Clang and C++ Module TS
Clang and C++ Module TS
我很难在Clang上获得模块工作(均为Xcode 9.3 Beta和最新的7.0.0 TRUNK提供(。我在这里和其他平台上都检查了其他答案,但我仍然无法弄清楚。这是我到目前为止所拥有的:
main.cpp
#include <iostream>
import stuff;
int main() {
std::cout << whatever() << "n";
}
模块
export module stuff;
export int whatever() {
return 5;
}
按照各种建议,我做到了:
clang -fmodules-ts -std=c++17 --precompile -o stuff.pcm module.cppm
clang -fmodules-ts -std=c++17 -fmodule-file=stuff.pcm main.cpp
这会导致链接器错误(whatever() not found
(。我不确定如何在这里进行。
注意:我尝试了-fprebuilt-module-path=.
,而不是-fmodule-file
,然后抱怨未知模块。
如果有人可以告诉我如何在Xcode中进行设置,甚至更好。
免责声明:我对使用模块地图和传统包含的解决方案不感兴趣。我对模块的兴趣不是要改善编译时间,而是正确地模块化我的代码(尤其是模板代码(。现在,我所有的代码都在标题文件中,无论如何,大多数函数称为静态。
事实证明,要么通过将其编译到对象文件然后链接该文件或通过快捷方式来编译预编译的模块文件:
clang++ -fmodules-ts -std=c++17 -o main -fmodule-file=module.pcm main.cpp module.pcm
我猜这是有道理的(如果将模块视为AST转储,则只是另一种源文件(。我还发现,如果模块的名称和模块文件的名称相同,则可以使用-fprebuilt-module-path=.
选项而不是指定-fmodule-file
。
也就是说,还有很多事情仍然使我感到困惑。例如,诸如always_inline
或noinline
之类的属性似乎并没有受到尊重。编译器将在优化时内联功能。
相关文章:
- 概念TS检查忽略私有访问修饰符
- 使用自定义 nodejs 插件时的"The specified module could not be found"
- 从 TS 到C++的平面缓冲区不起作用
- Boost.Python 和导入 dll,"The specified module could not be found"
- 范围TS成语和神秘的汽车&&
- TS 概念类型名约束
- 迭代器的范围 TS 和 C++20 概念是否需要能够使用"运算符>"?
- 如何使用标准库网络 TS 在服务器和客户端之间发送消息C++
- 快速 TS 片段 ffmpeg 解码 - 内存泄漏
- 如何在 module.reload() 之后保持 py::objects 存活
- 在Visual Studio中更新Qt翻译(.ts文件)时出现未指定错误
- 如何使用 cmake 来确保 C++14 编译器与实验文件系统 TS 库的链接?
- C++范围 TS 包括实验路径
- 如何检查类型 T 是否在参数包 Ts 中
- 范围中的"range"和"view"有什么区别sv3 ts?
- Clang and C++ Module TS
- 在 Linux 上使用带有标准标头的C++模块 TS
- 在Visual Studio中将python嵌入C ++时"No module named site"
- emscripten 断言=1 生成链接器错误"Referencing global in another module!"
- Clangs c++ Module TS支持:如何告诉clang++在哪里找到模块文件