3

GDCM 2.4.1 のソースをダウンロードし、CMake 2.8.12.1 と Visual Studio 2010 を使用してライブラリをビルドしました。C++ プロジェクトで GDCM を使用したいと考えています。残念ながら、VS で GDCM ソリューションを構築した後、bin フォルダーには lib ファイルしかなく、ヘッダー ファイルを含む典型的な "include" フォルダーはないようです。したがって、GDCM ライブラリを自分のプロジェクトに統合することはできません (自分の CMakeproject で FindPackage(GDCM) を使用しようとしましたが、ヘッダー ファイルが見つかりません)。

ヘッダー ファイルを手動でコピーしたり、GDCM のソース ディレクトリをターゲットにしたりしたくありません。誰か助けを知っていますか?

4

2 に答える 2

2

問題が VTK に関係していることがわかりました。プロジェクトでもこのライブラリを使用しています。そのため、GDCM の CMake で「GDCM_USE_VTK」を有効にする必要があります。GDCM ソリューションで「INSTALL」サブプロジェクトをビルドしようとすると、このオプションによってコンパイラ エラーが発生します。

cmake_install.cmake:31 (ファイル) での CMake エラー: ファイル INSTALL が「D:/Libs/VTK_5.6.0/BIN/bin/vtkCommon.dll」を見つけられません。

VTK ディレクトリを調べたところ、上記のパスが存在しないことがわかりました。代わりに、dll は次の場所にあります。

D:\Libs\VTK_5.6.0\BIN\bin\Release\vtkCommon.dll または D:\Libs\VTK_5.6.0\BIN\bin\Debug\vtkCommon.dll

つまり、GDCM ソリューションは、dll が特別なデバッグ フォルダーまたはリリース フォルダーにあることを認識していません。「GDCM_USE_VTK」を無効にすると、すべてが正常に機能し、すべてのファイルがターゲット フォルダーにコピーされます。しかし、VTK dll が必要です。何かご意見は?

マイケル

于 2014-01-15T12:41:48.313 に答える
0

同じ問題に触れたことがある人にとって、これが最終的な解決策です。GDCM ソリューションで「 ALL_BUILD 」をビルドし、次の方法で CMakeLists.txt に GDCM ライブラリを統合します。

FIND_PACKAGE(GDCM REQUIRED)
    IF(GDCM_FOUND)
        INCLUDE(${GDCM_USE_FILE})
        SET(GDCM_LIBRARIES 
            gdcmcharls
            gdcmCommon
            gdcmDICT
            gdcmDSED
            gdcmexpat
            gdcmgetopt
            gdcmIOD
            gdcmjpeg12
            gdcmjpeg16
            gdcmjpeg8
            gdcmMEXD
            gdcmMSFF
            gdcmopenjpeg
            gdcmzlib
            socketxx
            vtkgdcm
            Rpcrt4)
    ELSE(GDCM_FOUND)
        MESSAGE(FATAL_ERROR "Cannot find GDCM, did you set GDCM_DIR?")
    ENDIF(GDCM_FOUND)
于 2014-01-16T12:12:46.470 に答える