7

私は Qt の初心者で、新しい Nokia Qt SDK ベータ版を使用しており、空き時間に Nokia N900 用の小さなアプリケーションの開発に取り組んでいます。
幸いなことに、すべてを正しくセットアップでき、デバイスでアプリを実行することもできました。

私は学校で C++ を学んだので、それほど難しくないと思っていました。
Visual Studio では動作しないため、Qt Creator を IDE として使用しています。

また、アプリを Symbian に移植したいと考えているため、エミュレーターを数回実行し、Windows 用にコンパイルして最も厄介なバグをデバッグしています。(デバッガはデバイス上で正しく動作しません。)

私は .NET のバックグラウンドを持っているため、理解できないことがいくつかあります。

ビルド ボタンを押すと、Qt Creator はプロジェクト ディレクトリに一連のファイルを生成します。

  • moc_*.cppファイル - その目的がわかりません。誰か教えてくれませんか?
  • *.oファイル - これらはオブジェクトコードだと思います
  • *.rssファイル - 目的はわかりませんが、RSS とはまったく関係ありません。
  • MakefileそしてMakefile.Debug- わからない
  • AppName(拡張子なし) - Maemo の実行可能ファイル、およびAppName.sis- Symbian の実行可能ファイルだと思います。
  • AppName.loc- 何も思いつきません
  • AppName_installer.pkgそしてAppName_template.pkg- わからない
  • qrc_Resources.cpp-これは私のQtリソース用だと思います

AppName問題のアプリケーションの名前はどこにありますか)

これらのファイルは安全に削除できることに気付きました.Qt Creatorは単にそれらを再生成します.
問題は、それらが私のソース ディレクトリを汚染することです。特に、バージョン管理を使用しているため、再生成できる場合は、SVN にアップロードしても意味がありません。

では、これらのファイルの正確な目的は何か、Qt Creator にそれらを別のディレクトリに配置するように依頼するにはどうすればよいか教えてください。

編集:

この質問の答えから、思った以上に多くのことを学んだようです。:)
私を助けてくれたみんなに感謝します。すべての回答から何か新しいことを学ぶことができたので、全員に賛成票を投じました。

実際、Rob が推奨する方法が最も便利な解決策のようですが、Qt のビルド メカニズムがどのように機能するかについて、Kotti の回答が最も適切な説明を提供してくれたので、Kotti の回答を受け入れたものとしてマークしました。

ソリューション:

Maemo も Symbian ツールチェーンもまだシャドウ ビルドをサポートしていないようです。そのため、プロジェクト ファイルでこれらを使用して状況を解決します。

DESTDIR = ./NoSVN
OBJECTS_DIR = ./NoSVN
MOC_DIR = ./NoSVN
RCC_DIR = ./NoSVN
UI_HEADERS_DIR = ./NoSVN
4

4 に答える 4

19

あなたの質問に対する完全な回答ではありませんが、その一部にすぎません:)また、それはグーグルです。

C++ で開発する場合は、何Makefileの略かを知っておく必要があると思います。.locまた、ファイルは通常、ローカライズされた文字列/コンテンツを含むファイルだと思います。

代替テキスト
(ソース: thelins.se )

C++ ビルド システムを Qt ビルド システムと比較すると、C++ ビルド システム (灰色のボックス) が変更されていないことがわかります。ここではまだ C++ コードを作成しています。ただし、ソースとヘッダーをさらに追加します。ここには 3 つのコード ジェネレーターが含まれます。

メタオブジェクト コンパイラ (図の moc) – メタオブジェクト コンパイラは、Q_OBJECT マクロで始まるすべてのクラスを取得し、moc_*.cpp C++ ソース ファイルを生成します。このファイルには、クラス名、継承ツリーなど、モック化されているクラスに関する情報だけでなく、シグナルの実装も含まれています。これは、シグナルを発行するときに、実際には moc によって生成された関数を呼び出すことを意味します。

ユーザー インターフェイス コンパイラ (図の uic) – ユーザー インターフェイス コンパイラは、Designer から設計を取得し、ヘッダー ファイルを作成します。これらのヘッダー ファイルは通常どおりソース ファイルにインクルードされ、setupUi を呼び出してユーザー インターフェイス デザインをインスタンス化できます。

Qt リソース コンパイラ (図の rcc) – リソース コンパイラについてはまだ説明していません。画像やテキストファイルなどを実行可能ファイルに埋め込むことができますが、ファイルとしてアクセスすることもできます。これについては後で見ていきますが、この写真にそれが属する場所に含めたいだけです。

この図が、新しいナイス キーワードを C++ に追加するために Qt が実際に行っていることを明確にしてくれることを願っています。興味がある場合は、生成されたファイルを自由に読んでください。それらを変更しないでください。アプリケーションをビルドするたびに再生成されます。

QtCreator を使用している場合、moc ファイルはプロジェクト ディレクトリの debug および release サブディレクトリに生成されます。uic ファイルは、プロジェクト ディレクトリのルートに格納されます。rcc ファイルは一般的につまらないものですが、プロジェクト ディレクトリ階層のどこかにあるはずです。


編集: これらのファイルを SVN に含める必要はありません。.ncbこれは、.pdbやその他の一時ファイルをコミットするのとまったく同じですが。Qt アプリケーションで何かを変更するたびに、これらの一時ファイルは変更の更新として再生成されるため、それらを SVN にコミットする意味はありません。

于 2010-05-24T23:57:32.867 に答える
5

プロジェクトの .pro ファイルに以下を追加することで、生成されたファイルを別の場所に配置するように qmake (したがって QtCreator) に指示できます。

UI_DIR = .ui
MOC_DIR = .moc
OBJECTS_DIR = .obj

これにより、すべての ui ファイルが .ui ディレクトリに、moc ファイルが .moc ディレクトリに、すべての .o ファイルが .obj ディレクトリに配置されます。(もちろんお好みで変えてもOK)

qmake の関連ヘルプは、http://doc.qt.io/archives/4.6/qmake-variable-reference.html#moc-dir にあり ます。

于 2010-05-25T01:00:19.597 に答える
2

シャドウビルド( Qt Creator 2.0ベータ版ではデフォルトで有効)を使用する場合、これらの一時ファイルはすべて別のフォルダーに作成されます。例えば:

\MyProjects\ProjectFoo
\MyProjects\ProjectFoo-build

とても便利な私見。

于 2010-05-25T09:23:43.523 に答える
1

別のディレクトリに保存されているファイルを取得しようとしないでください。むしろ、たとえばhttp://svnbook.red-bean.com/en/1.4/svn.advanced.props.special.ignore.htmlで説明されているように、Subversion にそれらを無視するように指示してください。

ほとんどのソース管理システムは、生成されたファイルを無視することを適切にサポートしています。これは、ほぼすべてのソフトウェア プロジェクトで発生する問題であるためです。

于 2010-05-25T00:14:25.117 に答える