Windows で Qt をコンパイルしようとしましたが、#includes がインクルードされているファイルが存在しないというエラー (「そのようなファイルまたはディレクトリはありません」) で失敗するという興味深い問題に遭遇しました。ただし、ファイルは存在します。インクルードを行うファイルは、次のようなインクルードを持つ自動生成された「moc」ファイル (Qt によって作成) です。
#include "../../../../../../../../qt-everywhere-opensource-src-4.8.2/examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.h"
そのインクルード内の文字列の長さは 127 文字です。ビルドで生成およびコンパイルされた多くの「moc」ファイルがありますが、このような非常に長いファイル (127 文字以上) のみが失敗します。
問題のファイルはたまたま UNIX システム上にあり、Samba 経由で Windows と共有されています。シンボリック リンクを作成し、影響を受けるファイルで「qt-everywhere-opensource-src-4.8.2」を「qt-4.8.2」に置き換えることで、この問題を回避できました。結果は次のとおりです。
#include "../../../../../../../../qt-4.8.2/examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.h"
長さはわずか 102 文字で、問題なく動作します。
私は周りを検索しましたが、これへの参照を見つけることができませんでした。また、この Qt ビルド以外で問題を再現することもできませんでした (勝手に長いファイル名を作成して、それらを含めようとしただけです)。nmake
そのため、Qt が作成する makefile が実行時に何かを行っている可能性がありcl
、何らかの方法で長いインクルードを拒否する可能性があります。
これに関する追加情報はありますか?