mieki256's diary



2020/03/12(木) [n年前の日記]

#1 [prog] Qt Creator + Qt Quick を使うとリリースビルドができない件

Windows10 x64 1909 + Qt 5.14.1 + Qt Creator 4.11.0上で、Qt Quick を使ったアプリを作ろうとすると、「リリース」でビルドができない件について。

どうやら、Qt Creator が自動生成する Makefile がマズい、ような気がする。たぶん。

不具合が起きる仕組み。 :

「target pattern contains no '%'. stop」というメッセージは、make が、Makefile を解析できなかった時に出てくるお決まりのメッセージだそうで。ちなみに、Qt の場合、make として qmake を使ってるらしい。

ビルド時に Qt Creator は Makefile を自動生成するのだけど、Makefile の該当行を見たら、「C:_home_prg_~」てなファイルパスが指定されていた。これはおそらく、「:」がヤバイ…。

Windows にはドライブという概念があるので、ドライブ文字がファイルパスに含まれる時がある。「C:\hoge\」とか「D:\fuga\」とか。そして、ドライブ文字とディレクトリ名を分けるための区切り文字として「:」が使われる。

ところが、make が読む Makefile のルールでも、「:」が区切り文字として使われている。例えば、「hoge.o: hoge.c」と書けば「hoge.o を作るためには hoge.c が必要だよ」という指定になるけれど、「:」が前後を分離する区切り文字になってる。

つまり、Qt Creator が自動生成する Makefile 内で、「hoge: C:_home_prg_~」みたいな記述が出てくるものだから、qmake が「おいおい、区切り文字がたくさんあるぞ。意味わかんねーよ」とエラーメッセージを出してそこで処理が止まってしまう ―― という状態なのだろう。たぶん。

対策が思いつかない。 :

だったら、その Makefile を手打ちで修正して、「C:_home~」を「_home~」にでも書き換えてからビルドすればいいんじゃね? と思って試してみたのだけど、Qt Ceator はビルド時に毎回 Makefile を自動生成して、既にある Makefile を上書きしちゃうようで…。手打ちで修正しても意味が無い…。

これは勝手な想像だけど。Qt開発陣は、Mac か Linux で開発してるんじゃないのかなと。Mac や Linux はドライブ文字なんてないから、こんな不具合には遭遇しないはず。Windows上で make を使う時だけ発生する問題なわけで。

Windows + Qt Creator も、Qt Quick を使わない旧来のQtアプリの作り方なら、こういう不具合は起きないようで。そこはさすがにちゃんと動作確認してから公開してるのだろう…。でも、Qt Quick 使用のアプリ作成に関しては、Mac or Linux だけで動作確認して、Windows上で動くかどうかはちゃんとチェックしてないのでは…。もしかすると、Qt Quick を使ってる人って、そのぐらい少ないのかもしれない。たぶん。

さておき、では一体どうすればいいのか。

  • Qt Quick を窓から投げ捨てる。
  • Qt Creator を窓から投げ捨てる。
  • Qt を窓から投げ捨てる。
  • Windows を窓から投げ捨てる。
そのくらいしか思いつかない。

qmake を別の make に変えたりできないのかな。あるいは、MinGW を使わず MSVC にしたら状況が変わったりしないか。

Qt公式サイトでバグ報告されてないかと検索してみたけれど、Windows + Makefile 関連のバグ報告がたくさんあって、しかも全部英語なので、何が何だか…。

以上、1 日分です。

過去ログ表示

Prev - 2020/03 - Next
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project