Qt、ITK、VTKを使用して、Windows 7でmingw32を使用して構築したソフトウェアをコンパイルしようとしています。これは多くのコンピューターで正常に実行されましたが、ラップトップで問題が発生しています。
このマシンにQtを最初にインストールしたときに、「msvc2010」またはQtのビジュアルスタジオバージョンをインストールしたという点で間違いを犯しました。VSをインストールしましたが、これがデフォルトであり、変更しませんでした。私の間違いに気づき、私はこのQtのすべての痕跡をアンインストールし、Mingw32バージョンをインストールしました。私がダウンロードした正確なバージョンは次のとおりです。Windows用のQtライブラリ4.8.3(minGW 4.4、317 MB)
私はmingw32をインストールし、qtをインストールしましたが、すべて素晴らしくてダンディで、今はソフトウェアをコンパイルしています。美しく構築されますが、リンク段階で次の厄介なエラーが発生します。
mingw32-make[2]: *** No rule to make target 'C:/QtSDK/Desktop/Qt/4.8.1/msvc2010/
lib/QtOpenGL4.dll', needed by 'x.exe'. Stop.
CMakeFiles\Makefile2:62: recipe for target 'CMakeFiles/x.dir/all' failed
mingw32-make[1]: *** [CMakeFiles/x.dir/all] Error 2
Makefile:74: recipe for target 'all' failed
mingw32-make: *** [all] Error 2
ここで、xは私のプロジェクトの名前です。
makeターゲットに注意してください:C:/QtSDK/Desktop/Qt/4.8.1/msvc2010/lib/QtOpenGL4.dll。これは、DLLを探すための正しい場所ではありません。Qtの最初のインストールのlibの場所を見ています。QtSDKフォルダーはもう存在しません。新しいバージョンは別のフォルダーの下にあります。
これは悲しいことに、cmakeによってビルドフォルダーに生成されるCMakeFilesの下のlink.txtにも反映されています。エントリの1つは、C:\ QtSDK \ Desktop \ Qt \ 4.8.1 \ msvc2010 \ lib\QtGui4.dllと他の多くのDLLです。
明らかに、問題は、Cmakeが以前のバージョンのQtのターゲットを生成していることです。
これが発生しているばかげたキャッシュを消去して、これを行わないようにするにはどうすればよいですか? 私はCmakeを再インストールし、Qtを再インストールし、考えられるすべてのことを実行しました。Cmake変数がすべて正しいQtフォルダーを指していることを確認しました(もう1つは存在しないため、正しくない場合はリンク段階に到達できません)。
どうもありがとう。
編集:
私はこの非常に適切な警告を受け取ります、それはそれに惨めなファイルパスを持っています:
CMake Warning (dev) at CMakeLists.txt:22 (ADD_EXECUTABLE):
Policy CMP0003 should be set before this line. Add code such as
if(COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
as early as possible but after the most recent call to
cmake_minimum_required or cmake_policy(VERSION). This warning appears
because target "x" links to some libraries for which the linker must
search:
comctl32, vfw32, ws2_32, wsock32, -lgdi32, opengl32
and other libraries with known full path:
C:/Qt/4.8.3/lib/libQtGui4.a
C:/ITK/lib/libitksys-4.1.dll.a
C:/VTK/bin/libQVTK.a
C:/QtSDK/Desktop/Qt/4.8.1/msvc2010/lib/QtOpenGL4.dll
CMake is adding directories in the second list to the linker search path in
case they are needed to find libraries from the first list (for backwards
compatibility with CMake 2.4). Set policy CMP0003 to OLD or NEW to enable
or disable this behavior explicitly. Run "cmake --help-policy CMP0003" for
more information.
This warning is for project developers. Use -Wno-dev to suppress it.
「NEW」ポリシーを追加したところ、警告は消えましたが、それでも同じ問題が発生します。