0

Я успешно создаю PCL для 64-битных окон с помощью CMake и Visual Studio 2013. Я создал все зависимости самостоятельно (boost, Flann, QHull и VTK) , Теперь мне нужно создать 32-битную версию. К сожалению, у CMake есть проблемы с ссылкой на библиотеки VTK. Для 64 бит он добавляет полный путь к файлам проектов визуальной студии, например. "D: \ path \ to \ vtk \ 64 \ vtk-6.1.lib". Но для 32 бит он добавляет только «vtk.lib». Даже номер версии отсутствует, который всегда является частью имени файла. У компилятора нет возможности его найти. Было бы очень громоздко исправлять все проекты PCL самостоятельно.CMake создает неполные ссылки vtk при создании проектов PCL для 32-разрядной Visual Studio

Я уже сравнивал файлы CMakeCache.txt для 32 и 64 бит. За исключением различий 32/64 бит, они равны.

Есть ли кто-нибудь, что я могу сделать неправильно?

+0

Пожалуйста, предоставьте [минимальный пример] (http://stackoverflow.com/help/mcve), который воспроизводит это поведение. Кроме того, как вы собираете 32-битный пакет на 64-битной платформе? Вы используете кросс-компиляцию? Если да, укажите код используемого вами инструментального файла CMake. – Tsyvarev

+0

К сожалению, я не могу предоставить минимальный пример. Библиотека PCL вместе со своими зависимостями составляет несколько Giga Bytes. Создание 32-битных библиотек в 64-битных окнах не является проблемой. Вы можете просто указать CMake либо на Visual Studio 2015, либо на Visual Studio 2015 x64. Но теперь я смог найти решение, но не основную причину. Пожалуйста, прочитайте ниже ... – chuchu42

ответ

0

Сценарий PCL CMake загружает VTK с помощью команды find_package (VTK). Путь к пакету задается переменной VTK_DIR. Эта переменная указывает на папку, где находится VTKConfig.cmake. Для x64 и x86 у вас будут разные папки. По какой-то причине версия x86 VTKTargets.cmake, принадлежащая VTKConfig.cmake, пуста. После копирования и вставки содержимого из его x64-аналога, а также для поиска и замены, я смог скомпилировать проект. Таким образом, основной причиной было то, что VTKTargets.cmake был пуст. Но я не знаю, почему это пусто. Я построил VTK в режиме x64 и x86.

+0

Если вы создаете и устанавливаете x64 и x86 VTK ** отдельно **, то одна установка может повлиять на другую. Вы тоже создали VTK в Visual Studio? – Tsyvarev

+0

Да. Я создал два проекта, используя CMake. Один для x64 и один для x86. Впоследствии я создал как отладку, так и выпуск с помощью Visual Studio 2013. – chuchu42