Использование GDCM через CMake

Я скачал исходный код GDCM 2.4.1 и использовал CMake 2.8.12.1 и Visual Studio 2010 для сборки библиотек. Я хочу использовать GDCM в моем проекте C++. К сожалению, кажется, что после построения решения GDCM с VS в папке bin есть только lib-файлы, но нет типичной папки include с файлами заголовков, что я обычно ожидаю. Таким образом, я не могу интегрировать библиотеки GDCM в свой собственный проект (я пытался использовать FindPackage(GDCM) в своем собственном CMakeproject, но файлы заголовков не могут быть найдены).

Я не хочу копировать заголовочные файлы вручную или предназначаться для исходного каталога GDCM. Кто-нибудь знает помощь?

2 ответа

Я обнаружил, что проблема связана с VTK, я также использую эту библиотеку в своем проекте. Поэтому мне нужно включить "GDCM_USE_VTK" в CMake GDCM. Эта опция приводит к ошибке компилятора, когда я пытаюсь построить подпроект "INSTALL" в решении GDCM:

CMake Ошибка в cmake_install.cmake:31 (ФАЙЛ): файл 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. Какие-нибудь мысли?

Майкл

Для тех, кто когда-либо касается одной и той же проблемы, вот окончательное решение. Создайте "ALL_BUILD" в решении GDCM, затем интегрируйте библиотеки GDCM в ваш файл CMakeLists.txt следующим образом:

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)
Другие вопросы по тегам