Qt Creator 修復The code model could not parse an include file


在Ubuntu20.04上使用Qt Creator(4.11.0)時,程序運行起來沒問題,但編輯器會提示頭文件找不到,界面上提示各種錯誤。我以為是我的工程太過復雜,部分頭文件路徑設置錯誤,但是查了半天,沒有發現問題,google查了半天,也沒找到解決辦法。於是創建了一個很簡單的工程來測試,ro工程文件:
QT -= gui

CONFIG += c++11
CONFIG -= app_bundle

SOURCES += \
        main.cpp

main.cpp文件:

#include <iostream>

int main(int argc, char *argv[])
{
    std::cout << "hello world" << std::endl;
    return 0;
}

這么簡單的文件,編譯、運行都沒有問題,偏偏提示找不到頭文件

Warning:The code model could not parse an included file,which might lead to incorrent code completion and hightlighting,for example.

wchar.h:35:10: fatal error: 'stddef.h' file not found
main.cpp:1:1: note: in file included from /home/xzc/Documents/code/qt_test/main.cpp:1:
main.cpp:1:10: note: in file included from /home/xzc/Documents/code/qt_test/main.cpp:1:
iostream:39:10: note: in file included from /usr/include/c++/9/iostream:39:
ostream:38:10: note: in file included from /usr/include/c++/9/ostream:38:
ios:38:10: note: in file included from /usr/include/c++/9/ios:38:
iosfwd:40:10: note: in file included from /usr/include/c++/9/iosfwd:40:
postypes.h:40:10: note: in file included from /usr/include/c++/9/bits/postypes.h:40:
cwchar:44:10: note: in file included from /usr/include/c++/9/cwchar:44:

而且,wchar.h這個文件明明在 /usr/lib/gcc/x86_64-linux-gnu/9/include 里,沒有理由找不到,而且,我手動用G++、clang++編譯程序,都是沒有問題的,說明它們都認這個路徑,就是Qt Creator不認。更氣人的是,我手動include這個文件,它是找得到的,而且C++ Code Model Inspector也是認這個路徑的

這個提示是ClangCodeModel的,網上給出的解決辦法就是到 幫助->插件 那里把這個插件關掉,但是關掉之后,一些clang相關的功能也被關掉了,這不可接受啊。后來發現這些認不到的頭文件都是glibc的,大概是Qt Creator調用clang的時候,include參數沒設置好(或者是我沒設置好?),導致clang不認gcc的默認路徑,於是強制在pro工程文件里指定glibc的include路徑,問題解決:
INCLUDEPATH += /usr/lib/gcc/x86_64-linux-gnu/9/include

 

PS: 2021-05-03

根據https://bugreports.qt.io/browse/QTCREATORBUG-19667?attachmentOrder=desc,sudo apt install libclang-common-8-dev安裝libclang-common-8-dev即可解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM