Как мне построить PCL с помощью VCPKG без определения PCL_ONLY_CORE_POINT_TYPES

Файл CMakeLists.txt в папке .\vcpkg\buildtrees\pcl\src\pcl-1.13.1-38090574eb.clean по умолчанию определяет PCL_ONLY_CORE_POINT_TYPES как для MSVC, так и для MINGW. Но мне нужно построить PCL для всех типов точек.

Если я отредактирую файл CMakeLists.txt, чтобы удалить объявление...

  add_definitions("-DBOOST_ALL_NO_LIB -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -DNOMINMAX ${SSE_DEFINITIONS}")
  #add_definitions("-DBOOST_ALL_NO_LIB -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -DNOMINMAX -DPCL_ONLY_CORE_POINT_TYPES ${SSE_DEFINITIONS}")

...и запустите VCPKG, используя опцию --editable...

.\vcpkg install pcl[vtk]:x64-windows --featurepackages --recurse --editable pcl

...Я получаю следующую ошибку сборки...

-- Configuring x64-windows
-- Building x64-windows-dbg
CMake Error at scripts/cmake/vcpkg_execute_build_process.cmake:134 (message):
    Command failed: C:/dev/vcpkg/downloads/tools/cmake-3.27.1-windows/cmake-3.27.1-windows-i386/bin/cmake.exe --build . --config Debug --target install -- -v -j17
    Working Directory: C:/dev/vcpkg/buildtrees/pcl/x64-windows-dbg
    See logs for more information:
      C:\dev\vcpkg\buildtrees\pcl\install-x64-windows-dbg-out.log

Call Stack (most recent call first):
  installed/x64-windows/share/vcpkg-cmake/vcpkg_cmake_build.cmake:74 (vcpkg_execute_build_process)
  installed/x64-windows/share/vcpkg-cmake/vcpkg_cmake_install.cmake:16 (vcpkg_cmake_build)
  ports/pcl/portfile.cmake:74 (vcpkg_cmake_install)
  scripts/ports.cmake:168 (include)

Как мне обойти эту проблему?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
83
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы не упомянули install-x64-windows-dbg-out.log в сообщении об ошибке, поэтому я не могу сказать наверняка, но возможно, компоновщику MSVC нужно обработать слишком много символов. Связано: https://github.com/PointCloudLibrary/pcl/issues/5928
Зачем нужно строить PCL для всех типов точек? Т.е. какой тип точки вам нужен, которого нет в библиотеке в противном случае? Использование #define PCL_NO_PRECOMPILE может быть для вас решением.

Спасибо @IBitMyBytes, определение PCL_NO_PRECOMPILE помогло. Это следует выделить жирным шрифтом на странице PLC на github или Компиляция PCL из исходного кода в Windows с примечанием о том, что его следует использовать, если требуются другие, нестандартные типы точек!

Чтобы ответить на ваш вопрос о том, почему мне нужно было построить PCL для всех типов точек... Я пытался построить пример Сегментация на основе разницы нормалей, чтобы попытаться идентифицировать линейные объекты, то есть линии электропередачи, которые исключаются большинством средств шумоподавления. алгоритмы.

Поясним: новые многоимпульсные сканеры отлично подходят для увеличения плотности точек в ущерб четкости, поскольку они вносят много шума; примерно 1/3 данных — это шум. К сожалению, фирменное программное обеспечение, используемое для удаления этого шума, также удаляет линии электропередачи, которые имеют очень низкую интенсивность и очень мало ударов. Он также удаляет много растительности, но это еще одна проблема, которую нужно решить. :-)

На изображении ниже показан масштаб шума, на котором четко видны линии электропередачи. ЛЭП среди сильного шума

Спасибо за объяснение. Похоже, интересное приложение :)

IBitMyBytes 12.04.2024 10:03

Другие вопросы по теме