web-dev-qa-db-ja.com

Qt Creatorがヘッダーを見つけることができません(「そのようなファイルまたはディレクトリはありません」と言います)

Qt Creator 2.4.1(Qt 4.7.4 32ビットに基づく)にヘッダーファイルの検索場所デフォルトを指示するにはどうすればよいですか?

Qt CreatorでCファイルを開いて、

#include <stdio.h>

それは線を強調し、言います

stdio.h: No such file or directory

選択したディレクトリでヘッダーを探すように指示したいと思います。どうすればこれを行うことができますか?

更新

私も尋ねるべきだと思います:これも可能ですか?または、スタンドアロンのC++ファイルを編集するたびにプロジェクト全体を作成する必要がありますか?

16
user541686

私はしばしばこの問題に直面していることに気づきました。今すぐ自分のマシン(MacOS)でも再現できます。

QtCreatorには、GCCパス分析を正しく処理するためのプロジェクトが必要なようです(Qtフレームワークパスの上に)。
Qtがヘッダーを見つけるために使用するプロセスは、コンパイラーがヘッダーを見つけるパスを出力する特別な引数を使用してGCC(またはWindows上のコンパイラー)を起動することです。 [〜#〜] but [〜#〜]、これを行うには、このプロジェクトを使用するため、ファイルにプロジェクトが関連付けられている必要があります。使用するツールチェーンを決定し、GCCがどこにあるかを決定します。

したがって、答えは次のとおりです。構文分析を使用するには、プロジェクトを作成しますalways
このプロジェクトを作成するときは、使用するQt SDKとツールチェーンのバージョンを定義することが非常に重要であることに注意してください。そうしないと、構文control-clickが機能しません。

Qt SDKを使用したり、Creatorを使用してプロジェクトをビルドしたりしなくても、QtProjectファイルを使用する興味深い方法がいくつか見つかる場合があります。ここで同様の質問への回答を参照してください: https://stackoverflow.com/a/5817226/389405

私は個人的にこのメソッドを使用し、プロジェクトのすべてのサブディレクトリを一覧表示する.proファイルを使用し、ビルドするすべてのキーボードショートカットを無効にして、QtCreatorのみをエディターとして使用することに注意してください。構文の強調表示/リンクは素晴らしく、Eclipseよりもはるかに高速です。

これを行うには、プロジェクトのディレクトリでqmake -proを発行するだけです。いつでも削除できる[DIR].proファイルが作成されます。

私はここで私を悩ませていたこの構文分析の側面について1年前にバグを埋めました: 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をサポートする新しいベータ版を試してください)。

14
Gui13

使用しているオペレーティングシステムとコンパイラ、および両方のバージョンはどれですか?インストールの環境変数が正しいかどうかを確認します。たとえば、c ++のヘッダーはどこにありますか?バリエーションとして、左側のパネルのプロジェクト構成に「ヘッダーのインクルード」のパスを追加し、「プロジェクト-プログラム-ターゲット」に移動して、インクルードのパスを追加します。もう1つは、c ++標準ヘッダーの場所へのフルパスを.proファイルの変数「includepath」に追加することです。

1
jordenysp

または、スタンドアロンのC++ファイルを編集するたびにプロジェクト全体を作成する必要がありますか?

いいえ、プロジェクトツリーのルートを右クリックするだけで既存のプロジェクトにスタンドアロンファイルを含めることができます-コンテキストメニュー-既存のファイルを追加します。そのためにホットキーを割り当てたり、プロジェクトからファイルを削除したりできるので、お気に入りのエディターとその環境をすばやく簡単に使用できます。ファイルを開くだけで見ることができます。残念ながら、ファイルマネージャでダブルクリックして使用するスタンドアロンファイルにデフォルトプロジェクト(およびその環境)を割り当てるためのコマンドライン引数はありません。

それが役に立てば幸い。

1
Tim Kachko

スタンドアロンのC++ファイルは編集できますが、#includeやオートコンプリートなどの機能が失われる可能性があります。 1つのタスクを実行する単純なGUIプログラムであるかどうかにかかわらず、私は個人的にすべてのプロジェクトをQtに保持しているので、デバッグするか(gdbはコマンドラインプログラムを好まないようです、少なくとも私の経験では)、「単純なC++」を使用します。 Qtに依存しないプロジェクトの場合は「コマンドライン」プロジェクト。

1
Drise
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/
0
usertc

これは、現在のプロジェクトに定義されているツールチェーンによって異なります。

ツールチェーンは、[ツール]-[オプション]-[ビルドと実行]-[ツールチェーン]で定義されています。ほとんどは自動検出されますが、独自に追加することもできます。

デフォルトのツールチェーンはないため、選択したツールチェーンでこれらのヘッダーを見つけるためのプロジェクトが必要です。

0
Chris Browet