需要のないページ

プログラミングや趣味や。

Qtのビルドディレクトリが鬱陶しい話

能書き

デフォルト設定のままビルドすると、

ビルドディレクトリはプロジェクトのディレクトリと同一階層に生成される。

 

こんな感じ。

f:id:LouiS:20170211181549j:plain

これは気持ち悪い。

 

しかも、DebugとReleaseとでディレクトリが分かれているにも関わらず、

ファイル内部はこんな感じだ。

f:id:LouiS:20170211182006j:plain

ものすごく気持ち悪い。

当然、関係ないほうのディレクトリは空だ。

 

解決策

ツール→オプション→ビルドと実行 は、次のようになっている。

f:id:LouiS:20170211182950j:plain

デフォルトビルドディレクトリを、

ごちゃごちゃ文字列 → ./build に変更(.の個数に注意)。

そして、Qt Creatorを再起動。

 

これでだいぶきれいになる。 f:id:LouiS:20170211183529j:plain

 

もし既に作ってしまったプロジェクトについて、同じようなことをしたいなら、

プロジェクト(画面左)→ビルドディレクトリ を書き換えればよい。

 

 

 

Qtのプログラムをデバッグできない

Qt Creatorを使ってみたはいいけれど、実行はできてもデバッグできない。

『Unknown debugger type "No engine"』

いや、普通にデバッガが登録されてないって言ってよ...

 

デバッガを入手したはよいが、それでもエラーは改善されない。

 

ちょっとオプションを覗いてみたら、すぐ解決した。

f:id:LouiS:20170204162443j:plain

デバッガをドロップダウンリストから選ばなければならないらしい。

キットに合わせてx64を選んで、解決。

Visual Studio 2015とWindows 10 SDKを両立させる

いろいろなソフトをいじってると、Windows SDKを要求される場面が多々ある。

Visual StudioにはWindows SDKが同梱されているけれど、

VS2015のSDKは、外部から参照できない形で組み込まれているようだ。

 

仕方ないのでSDK単体をインストールしようとすると、エラーがでる。

You must uninstall the Windows Software Development Kit- Windows 10.0.10586.15 before you can install the latest version of the kit.

 

それで困っていたら、こんなフォーラムを見つけた。

stackoverflow.com

この記事にしたがって、デバッガを無事インストールできた。

 

なお、開くのはコントロールパネルでなくて、この画面。

f:id:LouiS:20170204123641j:plain

qt_metacallのリンクエラーを解消した(い)

追記:2017/03/21

内容に誤りが多かったため、大幅に修正しました。

 

発生した問題

Visual studioにQtをアドインで入れてみた。

 

QtのQObjectクラスを継承したクラスを作るときは、

Q_OBJECTマクロをヘッダに記載しなければならない。

 

でも、いざコンパイルしてみると...

error LNK2001: 外部シンボル ""public: virtual int __cdecl MyObject::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@MyObject@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)" は未解決です。 error LNK2001: 外部シンボル ""public: virtual void * __cdecl MyObject::qt_metacast(char const *)" (?qt_metacast@MyObject@@UEAAPEAXPEBD@Z)" は未解決です。 error LNK2001: 外部シンボル ""public: virtual struct QMetaObject const * __cdecl MyObject::metaObject(void)const " (?metaObject@MyObject@@UEBAPEBUQMetaObject@@XZ)" は未解決です。

 

いろいろ調べても、英語のページばっかりヒットする。

それっぽいlibファイルも見当たらない。

 

実はこれ、Qtの根幹技術であるMOCが働いていないせいである。

 

解決策1:ウィザードを使ってみる

louis-needless.hatenablog.com

 

解決策2:プロジェクトファイルなどを書き換える

louis-needless.hatenablog.com

 

反省

前回投稿した際は、単にQtの不具合として切り捨ててしまっていた。

あまりに知識が少なく、誤った情報を鵜呑みにしていたし...

メモ帳代わりの当ページ、私だけのために作ったページであるが、

多くの人の目に触れる以上、もっと正確な記事を書くべきであった。

 

戒めとして古い記事を残そうとも思ったが、

完全に間違った情報を野放しにするわけにもいけまい。

加筆どころか全体を修正して更新した。

/* コードブロック */