LoginSignup
9
11

More than 5 years have passed since last update.

Qt + CMakeメモ

Last updated at Posted at 2016-09-23

なかなか情報もないので・・・ハマりどころメモとか。

一次情報はこちら

Qt Creator 4.0系になってから、CMake対応強化がリリースノートに乗ることが増えてきています。実際、そこそこ使える(CLionと互角ぐらい)という印象ではあるんですが、ハマりどころも多そうなので、気づいたらメモしていこうと思います。

CMakeとは

メタなMakeです。MakefileやらVisual Studioのプロジェクトファイルやらxcodeのプロジェクトファイルやらを生成し、実際のビルドは他のツールが行います。そういう意味ではQMakeとほぼおなじですね。

CMakeは今後はデファクトになりそうな感じではありますが、結構覚えることも多く、使うのは簡単ではないです。覚悟は必要です。QMakeの方がシンプルです。ただ、Qt以外のプロジェクトでも使われることが多いので、Qt外のライブラリを利用するとかは便利になっていきそうです。

Qt Creator + CMakeの処理の流れ

Qt CreatorではCMakeのビルドファイルであるCMakeLists.txtをプロジェクトファイルとして扱えます。QMakeよりもちょっと凝った内容になっています。なにせ、CMake自身も手続き型スクリプト言語としていろんなことがでてしまうからです。

Qt Creatorは、まず一回ビルドの手前のMakefile作成まで行い、その結果のファイルをパースしてプロジェクトファイル一覧を取得しています。プロジェクトを開く時の動作はQMakeを使っているときよりもワンテンポ遅れます。

Qt Creator + CMakeのトラブルQ&A

Qt Creator + CMakeの組み合わせでのみ問題が起きる、というケースを紹介します。違うOS、もしくはコマンドラインでは正しくビルドできているのに、GUIだとなぜか、というケースです。

ビルドが何かエラーになる

build-[アプリ名]-mingw32-リリース と日本語の出力先になっていて、それがうまく処理できずにMakefile生成段階で失敗しているということがありました。Macだと日本語のままでも大丈夫ですが、Windowsだとダメでした。

プロジェクト設定のビルドと実行タブのCMake内のビルドディレクトリを英語のReleaseとかに直してあげれば直ると思います。一度日本語UIのQt Creatorで開いてしまったら、後から表示言語を英語とかに直しても、以前の設定が残ってしまっているため、失敗します。逆に、ディレクトリ名を直してしまえば日本語UIでも大丈夫です。

プロジェクトのファイル一覧に何も出ない

CMakeのバックエンドで使うビルドシステムを正しく設定してあげる必要があります。Macだと一種類しかないので問題ないですが、WindowsだとVisual Studioとかmingwとかあるので注意が必要です。

場所はWindowsだとツールオプションビルドと実行のページを開き、キットの中です。Qtと一緒にインストールするmingw32の場合、 CodeBlocks - MinGW Makefile を選びます。 MinGW Makefile だけではダメです。

プロジェクトにファイルを追加しても表示されない

CMakeを再実行しないと、プロジェクトに追加したファイルは表示されません。ビルドCMakeの実行を行ってください。

operator delete(void*)がundefined reference

これ以外にも、言語そのもののAPIが見当たらない、というケースです。Windowsでコマンドラインではg++をC++のコンパイラとして使ってくれるのに、よく見るとi686-w64-mingw32-gcc.exeが使われている・・・

修正箇所は2箇所です。全体設定とプロジェクト設定。おそらく、CMakeのプロジェクトを新規に開く時に全体設定を引き継いでしまうので、全体設定だけを直してもダメっぽいです。

全体設定はツールオプションビルドと実行のページを開き、コンパイラです。MinGWとかを選択して、コンパイラのパスをg++.exeにします。

プロジェクト設定はプロジェクト→ビルドと実行のCMakeの中です。CMAKE_CXX_COMPILERがCコンパイラになっているので、g++.exeとかにすれば大丈夫そうに思いきや、いくら変更してもダメです。CMakeLists.txt.userを削除してプロジェクトを開き直してください。

9
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
11