Связать ITK (Insight Toolkit) с решением С++ VS2008 без использования CMake?

Вопрос

Есть ли простой и прямой способ включения библиотек ITK в мой проект (решение VS2008) без использования CMake?

Фон

Я только начал изучать ITK на этой неделе. Пока что я успешно скомпилировал ITK и VTK, а также скомпилировал (и запустил) WikiExamples. Моя следующая цель — включить любую функциональность ITK в свой собственный проект. У меня нет опыта работы с CMake, за исключением использования его во время задокументированного процесса установки.

Моя собственная кодовая база проекта сама по себе представляет собой довольно сложную среду SDK в довольно большом сложном решении VS2008, к которому я хочу добавить лишь немного функциональности ITK. Поскольку я уже создал ITK, могу ли я просто установить включения в файлы .h и добавить каталоги lib в компоновщик?

Есть ли хороший способ сделать это, поскольку файлы .h распределены по всему кодовому дереву ITK?

Я понял, что этот вопрос похож, но данный ответ было слишком загадочным для меня, извините.

Редактировать: после второго и третьего прочтения оказалось, что это не так. Это привело к моему ответу ниже.


person BmyGuest    schedule 09.10.2014    source источник
comment
Лучший способ (и единственный официально поддерживаемый метод) использования любого программного обеспечения Kitware с открытым исходным кодом (даже с Visual Studio) — использовать CMake для создания проекта Visual Studio для вашего приложения. Это избавит вас от множества проблем с настройками компилятора и компоновщика, если вы не очень хорошо разбираетесь в настройках компилятора и компоновщика Visual Studio.   -  person drescherjm    schedule 09.10.2014
comment
Привет, я использовал CMake для сборки ITK и VTK, я просто не знал, как затем продолжить использовать их в моем проекте, для которого я не хочу использовать CMake. Однако после второго прочтения альтернативного вопроса (ссылка выше) я понял, что в решении есть проект Install, который не создается автоматически в ALL_BUILD, а — при сборке — копирует все файлы в одно место (C: \Program Files (x86)\itk) для удобного подключения, и что эту папку можно указать с помощью CMake и переменной CMAKE_INSTALL_PREFIX при настройке проекта ITK....   -  person BmyGuest    schedule 09.10.2014


Ответы (1)


При настройке ITK с помощью CMake (или cmake-gui) можно установить переменную CMAKE_INSTALL_PREFIX в место назначения для всех выходных данных. Значение по умолчанию: C:/Programm Files (x84)/itk.

CMAKE-GUI для настройки сборки ITK

После успешного выполнения Configure и Generate файл решения (ITK.sln) был создан в заданном разделе «Где собрать двоичные файлы». " и может быть открыт в Visual Studi0 2008. Решение имеет проект по умолчанию ALL_BUILD, который строит решение, но также имеет проект INSTALL, который по умолчанию пропускается.

Решение VS 2008

Сборка этого решения (после ALL_BUILD) копирует все необходимые файлы lib, .h, .dll и т. д. в путь, указанный ранее.

Вывод VS 2008 после сборки INSTALL

Эта структура папок является местом, куда можно связать мой собственный проект.

Окончательная структура папок

Ссылка в вашем собственном проекте

В вашем собственном проекте VS Studio (я на VS 2008) вы должны изменить свойства своего проекта, чтобы включить включаемые файлы:

Добавление включаемых файлов

И вам нужно изменить свойства вашего проекта, чтобы включить файлы библиотеки для связывания:

введите здесь описание изображения

person BmyGuest    schedule 09.10.2014
comment
В подпапке bin есть только файл itkTestDriver.exe? - person sara_123; 04.11.2014
comment
Как связать его с моим проектом? У меня проблема с привязкой itk к моему проекту. Это ссылка на мой вопрос: stackoverflow.com/questions/26739488/ Пожалуйста, помогите мне с этой проблемой. - person sara_123; 04.11.2014
comment
В своем проекте вы добавляете путь к папке include в свойствах проекта C++->Gerneral->Additional Include Directory, и вы добавляете путь к папке lib в свойствах проекта Linker->General->Additional Library Directory. Обратите внимание, что вам нужно сделать это для Debug/Release отдельно! - person BmyGuest; 05.11.2014
comment
Я изменил ответ выше, чтобы прояснить это. - person BmyGuest; 05.11.2014