簡體   English   中英

Qt Creator找不到標題(說:“沒有這樣的文件或目錄”)

[英]Qt Creator can't find headers (says: “No such file or directory”)

如何判斷Qt Creator 2.4.1(基於Qt 4.7.4 32位) 默認情況下查找頭文件的位置?

當我在Qt Creator中打開一個C文件然后說

#include <stdio.h>

它強調了這條線並說道

stdio.h: No such file or directory

我想告訴它在我選擇的目錄中查找標題; 我該怎么做呢?

更新

我想我也應該問:這有可能嗎? 或者我每次要編輯獨立的C ++文件時都必須創建整個項目嗎?

我發現自己經常遇到這個問題。 我現在也可以在我的機器上重現它(Mac OS)。

看起來QtCreator需要有一個項目來正確處理GCC路徑分析(在Qt框架路徑之上)。
Qt用於查找標頭的過程是它使用特殊參數啟動GCC(或Windows上的編譯器),使其輸出編譯器找到其標頭的路徑。 但是 ,要做到這一點,它必須有一個與您的文件相關聯的項目,因為它使用此項目來確定要使用的工具鏈,從而找到GCC。

所以答案是這樣的: 總是創建一個項目來使用語法analyzis。
請注意,在創建此項目時,定義要使用的Qt SDK版本和工具鏈非常重要,否則語法control-click將不起作用。

您可能會發現使用Qt Project文件的一些有趣方法,盡管不使用Qt SDK或使用Creator來構建項目。 請在此處查看類似問題的答案: https//stackoverflow.com/a/5817226/389405

請注意,我個人使用此方法,使用.pro文件只列出我項目的所有子目錄,並使用所有鍵盤快捷鍵來構建禁用,以便我只使用Qt Creator作為編輯器。 語法高亮/鏈接非常棒,比Eclipse快得多,遠遠快得多!

為此,只需在項目目錄中發出qmake -pro即可。 它將創建一個[DIR].pro文件,您可以隨時刪除它。

我在一年前填寫了一個關於這個語法analyzis的一個方面的錯誤,這個問題困擾我: https ://bugreports.qt.io/browse/QTCREATORBUG-4846,原因是我使用的編譯器用法語輸出數據而不是英語的。 他們修復了2.4中的代碼,但它可能是特定於Unix的(有關更多信息,請參閱問題的注釋),因此您可能希望測試此問題是否可以應用於您的案例。

如果在為您的版本創建項目后問題仍然存在,請務必將其指向qt-project.org上的人員!

否則,我看到的唯一解決方案是修改QtCreator的源代碼。 您可以在他們的上一篇文章中找到有關如何貢獻的一些信息: https//blog.qt.io/blog/2012/03/15/qt-creator-2-5-beta/ (並嘗試他們的新測試版,支持C ++ lambdas )。

您正在使用哪個操作系統和編譯器以及兩者的版本? 檢查安裝的環境變量是否正確,例如c ++的頭文件在哪里? 一種變化是將“包含標題”的路徑添加到左側面板中的項目配置,轉到“項目 - 程序 - 目標”並添加包含的路徑。 另一種方法是將.c ++標准頭文件位置的完整路徑添加到.pro文件中的變量“includepath”。

可以編輯獨立的C ++文件,但是你可能會失去#include和autocomplete等功能。 我親自把我的所有項目保存在Qt中,無論是一個簡單的GUI程序執行一項任務,所以我可以調試它(gdb似乎不喜歡命令行程序,至少根據我的經驗)或使用“簡單的C ++”命令行“非Qt依賴項目的項目。

或者我每次要編輯獨立的C ++文件時都必須創建整個項目嗎?

不,只需右鍵單擊項目樹的根目錄 - 上下文菜單 - 添加現有文件,即可在現有項目中包含獨立文件。 您可以為其分配熱鍵,以及從項目中刪除文件,因此可以快速輕松地使用您喜歡的編輯器及其環境。 您可以在打開文件時查看它。 遺憾的是,沒有命令行參數可以為獨立文件分配默認項目(及其環境),以便在文件管理器中雙擊使用它。

希望能幫助到你。

add INCLUDEPATH to "project.pro" file

example for raspberry pi qt projects:
# Qt Creator can't find headers (says: “No such file or directory”)
# add compile includes
INCLUDEPATH += /home/user/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/libc/usr/include/ \
               /home/user/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/libc/usr/include/arm-linux-gnueabihf/
# pi rootfs includes
INCLUDEPATH += /home/user/raspi/sysroot/usr/include/

這取決於為當前項目定義的工具鏈。

工具鏈在工具 - 選項 - 構建和運行工具鏈中定義。 大多數是自動檢測,但您可以添加自己的。

沒有默認的工具鏈,因此您需要一個項目,以便在為其選擇的工具鏈中找到這些標題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM