【问题标题】:ClangCodeModel in QtCreator says "module not found" on imported C++20 modulesQtCreator 中的 ClangCodeModel 在导入的 C++20 模块上说“找不到模块”
【发布时间】:2021-10-18 02:29:26
【问题描述】:

我使用 QtCreator 4.15.2,clang 12.0.1。

我有 "generic project" 和 makefile。文件 src/test/main.cpp 包含 import test.StringUtil;。 QtCreator 抱怨找不到模块。 (项目构建正常,但makefile使用gcc;我不熟悉clang。)我试过这个:

  1. 在单独的目录中生成.pcm 文件:

    clang++ -std=c++20 -fmodules --precompile -x c++-module src/test/StringUtil.cpp -o target/clang/test.StringUtil.pcm
    
  2. 在项目根目录中编辑了 myproject.cxxflags,使其包含:

    -std=c++20 -fmodules -fprebuilt-module-path=/home/me/myproject/target/clang -Wall -Wextra -Wpedantic -fno-rtti
    

如果我指定相对路径-fprebuilt-module-path=target/clang,那么什么都不会改变; QtCreator 仍然说找不到该模块。但是绝对路径看起来像 ClangCodeModel 被禁用(崩溃?):QtCreator 的符号组合框中的 ,没有语法错误报告。

  1. 我也尝试编译生成.pcm文件,没有区别:

    clang++ -std=c++20 -fmodules -c -x c++-module src/test/StringUtil.cpp -o target/build/clang/test.StringUtil.o
    

那么:我该如何让它发挥作用?

【问题讨论】:

    标签: clang qt-creator c++-modules


    【解决方案1】:

    当我在 my own build system 中添加对模块的支持时,我发现使用标志 -fmodule-file="path/to/other.pcm" 指定每个导入的模块是最简单的。

    我猜未来大型构建系统也会这样做。因为无论如何您都需要预处理文件,所以没有额外的费用。 (不过,如果您手动编写 makefile 可能会有些额外的工作)

    我认为 qtcreators 代码模型目前还不支持模块。我试过了,但对我不起作用。

    【讨论】:

      猜你喜欢
      • 2017-03-15
      • 2021-11-06
      • 2021-10-20
      • 1970-01-01
      • 2021-08-11
      • 2017-03-16
      • 2023-04-02
      • 2019-09-25
      • 2013-02-13
      相关资源
      最近更新 更多