Win10 + qt5.6.3 + pcl1.8.0 環境搭建(安裝、配置)

網上不少帖都是在 VS 下搭建的 qt 和 pcl 庫,而本人是在 Qt Creator 下搭建的環境,因此過程有些坎坷,特此記錄一下。ios

先甩個鍋咯~~~因爲機器的差異,因此可能會出現別的錯誤,這裏分享的是我遇到的錯誤噢。。。sql

首先給出系統環境以及配置信息:

系統:Win10 64位json

QT庫版本:5.6.3 MSVCwindows

PCL庫版本:1.8.0 MSVCapp

簡單說一下概念,Qt Creator 是開發環境(IDE),qt 庫和 pcl 庫是第三方庫,MinGW、MSVC 是兩種不一樣的編譯器。這兩個第三方庫是須要通過編譯才能使用的,而爲了省去你們的麻煩,官方提供了已經被某些版本的編譯器編譯過的庫,直接安裝就可使用,稱爲 預編譯版。因此,纔會有不一樣版本的預編譯版的庫,在安裝的時候要選擇同一種編譯器編譯的庫才最保險。固然,不嫌麻煩的話,徹底能夠本身從新編譯一下,這個你們就本身查資料吧。。。dom

好了,說說編譯器版本選擇的問題,網上有帖分析這兩種編譯器,不過我的感受仍是蘿蔔白菜各有所愛。我爲何用 MSVC 版的呢?由於 PCL 官網提供的 Windows 下面的預編譯版庫只有 MSVC 版的,我下的這個也是從網上找的連接。還有一個緣由是,我以前在電腦上裝過 VS2013,安裝它的時候,電腦上就自動安裝了 MSVC2013 編譯器。ide

好,下面進入正題,安裝過程(因爲是傻瓜式安裝沒什麼好說的,就不詳細展開了):工具

1. MSVC 編譯器的問題

MSVC 是 Microsoft Visual C++ 的縮寫。因爲以前我已經安裝了 VS 2013,因此就不須要再安裝了,電腦上已經有 MSVC2013 編譯器了。若是沒有安裝 VS 的話,要麼安裝 VS,要麼只安裝 MSVC 編譯器,網上能夠查獲得不少帖。個人是 2013 版本,因此如下均以此爲依據。若是是 VS2015 的話,那就是 MSVC2015 版本。ui

2. CDB 調試器的問題

編譯器是用來編譯程序的,而調試器是 debug 程序的時候要用到的,要在 Qt Creator 裏面調試 Windows 程序,就須要安裝相應的調試器。atom

有一個東西叫 Windows Debugging Tools,裏面有一個 cdb.exe,咱們須要的就是這個東西。固然,不須要調試程序的朋友們,就不用安裝這個調試工具了。

在安裝的時候,有個界面是選擇安裝哪些東西的,只選擇那個 debugging tools 就好了,參考網頁:

https://blog.csdn.net/FORmingtian/article/details/84526971

安裝路徑默認就好了,否則 Qt Creator 不能自動檢測到,還得手動設置。

3. 安裝 Qt Creator + qt 庫

Qt 官方提供了一個安裝程序,裏面包含了 Qt Creator、qt 庫以及編譯所須要的各類工具,這是各版本下載連接。我下載的是:

qt-opensource-windows-x86-msvc2013-5.6.3.exe

直接運行,安裝路徑最好不要有中文和空格,而後一路 next 安裝就能夠了,其中有一個界面是選擇須要安裝哪些東西,反正我是全選了。

4. 安裝 PCL 庫

PCL 官網只給了 MSVC 版本的預編譯庫,並且版本還不新,我是從網上找的一個網址下的 1.8.0 的庫:

PCL-1.8.0-AllInOne-msvc2013-win32.exe

這個安裝程序從名字就能夠看出來,是一個究極傻瓜式安裝包,裏面包含了 Boost、Eigen、FLANN、OpenNI二、Qhull、VTK,固然都是與這個版本 pcl 匹配的版本。

直接運行安裝程序,一樣的,安裝路徑不要有中文空格。安裝過程當中,有一個界面是選擇是否要建立環境變量的,默認是不建立,應該選第二個,對全部用戶建立。

安裝完成後,還要設置額外的環境變量才能夠正常使用,否則 Qt 程序總會報錯 「程序沒法啓動」,這個是個人環境變量(Path)截圖:

設置好環境變量後,電腦重啓。

而後打開 Qt Creator,別跟我說找不到圖標,小娜那裏搜索qt就好了。

打開 工具--選項--構建和運行--構建套件,下面這樣就沒問題了:

其中,調試器那一欄,若是是默認路徑安裝的前面的 Windows SDK,那它會自動檢測到,若是改了路徑,這裏就手動設置一下。前面也說過了,沒有調試器也能夠運行程序,release 方式運行就行。可是編譯器那一欄必須有,否則程序沒法編譯運行!!

5. Pro 文件

我是要調用 PCL,因此內容以下(根據本身的項目名啥的本身根據須要選擇複製):

#-------------------------------------------------
#
# Project created by QtCreator 2019-02-18T20:56:54
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = zaoshengjiqiren
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp \
    loginwindow.cpp \
    settingswindow.cpp

HEADERS  += mainwindow.h \
    loginwindow.h \
    settingswindow.h


INCLUDEPATH += $(PCL_ROOT)/include/pcl-1.8 \
               $(PCL_ROOT)/include/pcl-1.8/pcl \
               $(PCL_ROOT)/3rdParty/Boost/include/boost-1_59 \
               $(PCL_ROOT)/3rdParty/Eigen/eigen3 \
               #${PCL_ROOT}/3rdParty/FLANN/include \
               $(PCL_ROOT)/3rdParty/FLANN/include/flann \
               D:/pcl-1.8.0/OpenNI2/Include \
               $(PCL_ROOT)/3rdParty/Qhull/include \
               $(PCL_ROOT)/3rdParty/VTK/include/vtk-7.0

CONFIG(debug,debug|release){

LIBS += -L$(PCL_ROOT)/lib\
        #-lpcl_apps_debug\
        -lpcl_common_debug\
        -lpcl_features_debug\
        -lpcl_filters_debug\
        -lpcl_io_debug\
        -lpcl_io_ply_debug\
        -lpcl_kdtree_debug\
        -lpcl_keypoints_debug\
        -lpcl_ml_debug\
        -lpcl_octree_debug\
        -lpcl_outofcore_debug\
        -lpcl_people_debug\
        -lpcl_recognition_debug\
        -lpcl_registration_debug\
        -lpcl_sample_consensus_debug\
        -lpcl_search_debug\
        -lpcl_segmentation_debug\
        #-lpcl_simulation_debug\
        -lpcl_stereo_debug\
        -lpcl_surface_debug\
        -lpcl_tracking_debug\
        -lpcl_visualization_debug\

LIBS += -L$(PCL_ROOT)/3rdParty/Boost/lib\
        -llibboost_atomic-vc120-mt-gd-1_59\
        -llibboost_chrono-vc120-mt-gd-1_59\
        -llibboost_container-vc120-mt-gd-1_59\
        -llibboost_context-vc120-mt-gd-1_59\
        -llibboost_coroutine-vc120-mt-gd-1_59\
        -llibboost_date_time-vc120-mt-gd-1_59\
        -llibboost_exception-vc120-mt-gd-1_59\
        -llibboost_filesystem-vc120-mt-gd-1_59\
        -llibboost_graph-vc120-mt-gd-1_59\
        -llibboost_iostreams-vc120-mt-gd-1_59\
        -llibboost_locale-vc120-mt-gd-1_59\
        -llibboost_log-vc120-mt-gd-1_59\
        -llibboost_log_setup-vc120-mt-gd-1_59\
        -llibboost_math_c99-vc120-mt-gd-1_59\
        -llibboost_math_c99f-vc120-mt-gd-1_59\
        -llibboost_math_c99l-vc120-mt-gd-1_59\
        -llibboost_math_tr1-vc120-mt-gd-1_59\
        -llibboost_math_tr1f-vc120-mt-gd-1_59\
        -llibboost_math_tr1l-vc120-mt-gd-1_59\
        -llibboost_mpi-vc120-mt-gd-1_59\
        -llibboost_prg_exec_monitor-vc120-mt-gd-1_59\
        -llibboost_program_options-vc120-mt-gd-1_59\
        -llibboost_random-vc120-mt-gd-1_59\
        -llibboost_regex-vc120-mt-gd-1_59\
        -llibboost_serialization-vc120-mt-gd-1_59\
        -llibboost_signals-vc120-mt-gd-1_59\
        -llibboost_system-vc120-mt-gd-1_59\
        -llibboost_test_exec_monitor-vc120-mt-gd-1_59\
        -llibboost_thread-vc120-mt-gd-1_59\
        -llibboost_timer-vc120-mt-gd-1_59\
        -llibboost_unit_test_framework-vc120-mt-gd-1_59\
        -llibboost_wave-vc120-mt-gd-1_59\
        -llibboost_wserialization-vc120-mt-gd-1_59

LIBS += -L$(PCL_ROOT)/3rdParty/FLANN/lib\
        -lflann-gd\
        -lflann_cpp_s-gd\
        -lflann_s-gd

LIBS += -LD:/pcl-1.8.0/OpenNI2/Lib\
        -lOpenNI2

LIBS += -L$(PCL_ROOT)/3rdParty/Qhull/lib\
        -lqhull-gd\
        -lqhullcpp-gd\
        -lqhullstatic-gd\
        -lqhullstatic_r-gd\
        -lqhull_p-gd\
        -lqhull_r-gd

LIBS += -L$(PCL_ROOT)/3rdParty/VTK/lib\
        -lvtkalglib-7.0-gd\
        -lvtkChartsCore-7.0-gd\
        -lvtkCommonColor-7.0-gd\
        -lvtkCommonComputationalGeometry-7.0-gd\
        -lvtkCommonCore-7.0-gd\
        -lvtkCommonDataModel-7.0-gd\
        -lvtkCommonExecutionModel-7.0-gd\
        -lvtkCommonMath-7.0-gd\
        -lvtkCommonMisc-7.0-gd\
        -lvtkCommonSystem-7.0-gd\
        -lvtkCommonTransforms-7.0-gd\
        -lvtkDICOMParser-7.0-gd\
        -lvtkDomainsChemistry-7.0-gd\
        -lvtkDomainsChemistryOpenGL2-7.0-gd\
        -lvtkexoIIc-7.0-gd\
        -lvtkexpat-7.0-gd\
        -lvtkFiltersAMR-7.0-gd\
        -lvtkFiltersCore-7.0-gd\
        -lvtkFiltersExtraction-7.0-gd\
        -lvtkFiltersFlowPaths-7.0-gd\
        -lvtkFiltersGeneral-7.0-gd\
        -lvtkFiltersGeneric-7.0-gd\
        -lvtkFiltersGeometry-7.0-gd\
        -lvtkFiltersHybrid-7.0-gd\
        -lvtkFiltersHyperTree-7.0-gd\
        -lvtkFiltersImaging-7.0-gd\
        -lvtkFiltersModeling-7.0-gd\
        -lvtkFiltersParallel-7.0-gd\
        -lvtkFiltersParallelImaging-7.0-gd\
        -lvtkFiltersProgrammable-7.0-gd\
        -lvtkFiltersSelection-7.0-gd\
        -lvtkFiltersSMP-7.0-gd\
        -lvtkFiltersSources-7.0-gd\
        -lvtkFiltersStatistics-7.0-gd\
        -lvtkFiltersTexture-7.0-gd\
        -lvtkFiltersVerdict-7.0-gd\
        -lvtkfreetype-7.0-gd\
        -lvtkGeovisCore-7.0-gd\
        -lvtkglew-7.0-gd\
        -lvtkGUISupportQt-7.0-gd\
        -lvtkGUISupportQtSQL-7.0-gd\
        -lvtkhdf5-7.0-gd\
        -lvtkhdf5_hl-7.0-gd\
        -lvtkImagingColor-7.0-gd\
        -lvtkImagingCore-7.0-gd\
        -lvtkImagingFourier-7.0-gd\
        -lvtkImagingGeneral-7.0-gd\
        -lvtkImagingHybrid-7.0-gd\
        -lvtkImagingMath-7.0-gd\
        -lvtkImagingMorphological-7.0-gd\
        -lvtkImagingSources-7.0-gd\
        -lvtkImagingStatistics-7.0-gd\
        -lvtkImagingStencil-7.0-gd\
        -lvtkInfovisCore-7.0-gd\
        -lvtkInfovisLayout-7.0-gd\
        -lvtkInteractionImage-7.0-gd\
        -lvtkInteractionStyle-7.0-gd\
        -lvtkInteractionWidgets-7.0-gd\
        -lvtkIOAMR-7.0-gd\
        -lvtkIOCore-7.0-gd\
        -lvtkIOEnSight-7.0-gd\
        -lvtkIOExodus-7.0-gd\
        -lvtkIOExport-7.0-gd\
        -lvtkIOGeometry-7.0-gd\
        -lvtkIOImage-7.0-gd\
        -lvtkIOImport-7.0-gd\
        -lvtkIOInfovis-7.0-gd\
        -lvtkIOLegacy-7.0-gd\
        -lvtkIOLSDyna-7.0-gd\
        -lvtkIOMINC-7.0-gd\
        -lvtkIOMovie-7.0-gd\
        -lvtkIONetCDF-7.0-gd\
        -lvtkIOParallel-7.0-gd\
        -lvtkIOParallelXML-7.0-gd\
        -lvtkIOPLY-7.0-gd\
        -lvtkIOSQL-7.0-gd\
        -lvtkIOVideo-7.0-gd\
        -lvtkIOXML-7.0-gd\
        -lvtkIOXMLParser-7.0-gd\
        -lvtkjpeg-7.0-gd\
        -lvtkjsoncpp-7.0-gd\
        -lvtklibxml2-7.0-gd\
        -lvtkmetaio-7.0-gd\
        -lvtkNetCDF-7.0-gd\
        -lvtkNetCDF_cxx-7.0-gd\
        -lvtkoggtheora-7.0-gd\
        -lvtkParallelCore-7.0-gd\
        -lvtkpng-7.0-gd\
        -lvtkproj4-7.0-gd\
        -lvtkRenderingAnnotation-7.0-gd\
        -lvtkRenderingContext2D-7.0-gd\
        -lvtkRenderingContextOpenGL2-7.0-gd\
        -lvtkRenderingCore-7.0-gd\
        -lvtkRenderingFreeType-7.0-gd\
        -lvtkRenderingImage-7.0-gd\
        -lvtkRenderingLabel-7.0-gd\
        -lvtkRenderingLOD-7.0-gd\
        -lvtkRenderingOpenGL2-7.0-gd\
        -lvtkRenderingQt-7.0-gd\
        -lvtkRenderingVolume-7.0-gd\
        -lvtkRenderingVolumeOpenGL2-7.0-gd\
        -lvtksqlite-7.0-gd\
        -lvtksys-7.0-gd\
        -lvtktiff-7.0-gd\
        -lvtkverdict-7.0-gd\
        -lvtkViewsContext2D-7.0-gd\
        -lvtkViewsCore-7.0-gd\
        -lvtkViewsInfovis-7.0-gd\
        -lvtkViewsQt-7.0-gd\
        -lvtkzlib-7.0-gd

}else {

LIBS += -L$(PCL_ROOT)/lib\
#       -lpcl_apps_release\
        -lpcl_common_release\
        -lpcl_features_release\
        -lpcl_filters_release\
        -lpcl_io_release\
        -lpcl_io_ply_release\
        -lpcl_kdtree_release\
        -lpcl_keypoints_release\
        -lpcl_ml_release\
        -lpcl_octree_release\
        -lpcl_outofcore_release\
        -lpcl_people_release\
        -lpcl_recognition_release\
        -lpcl_registration_release\
        -lpcl_sample_consensus_release\
        -lpcl_search_release\
        -lpcl_segmentation_release\
#       -lpcl_simulation_release\
        -lpcl_stereo_release\
        -lpcl_surface_release\
        -lpcl_tracking_release\
        -lpcl_visualization_release\

LIBS += -L$(PCL_ROOT)/3rdParty/Boost/lib\
        -llibboost_atomic-vc120-mt-1_59\
        -llibboost_chrono-vc120-mt-1_59\
        -llibboost_container-vc120-mt-1_59\
        -llibboost_context-vc120-mt-1_59\
        -llibboost_coroutine-vc120-mt-1_59\
        -llibboost_date_time-vc120-mt-1_59\
        -llibboost_exception-vc120-mt-1_59\
        -llibboost_filesystem-vc120-mt-1_59\
        -llibboost_graph-vc120-mt-1_59\
        -llibboost_iostreams-vc120-mt-1_59\
        -llibboost_locale-vc120-mt-1_59\
        -llibboost_log-vc120-mt-1_59\
        -llibboost_log_setup-vc120-mt-1_59\
        -llibboost_math_c99-vc120-mt-1_59\
        -llibboost_math_c99f-vc120-mt-1_59\
        -llibboost_math_c99l-vc120-mt-1_59\
        -llibboost_math_tr1-vc120-mt-1_59\
        -llibboost_math_tr1f-vc120-mt-1_59\
        -llibboost_math_tr1l-vc120-mt-1_59\
        -llibboost_mpi-vc120-mt-1_59\
        -llibboost_prg_exec_monitor-vc120-mt-1_59\
        -llibboost_program_options-vc120-mt-1_59\
        -llibboost_random-vc120-mt-1_59\
        -llibboost_regex-vc120-mt-1_59\
        -llibboost_serialization-vc120-mt-1_59\
        -llibboost_signals-vc120-mt-1_59\
        -llibboost_system-vc120-mt-1_59\
        -llibboost_test_exec_monitor-vc120-mt-1_59\
        -llibboost_thread-vc120-mt-1_59\
        -llibboost_timer-vc120-mt-1_59\
        -llibboost_unit_test_framework-vc120-mt-1_59\
        -llibboost_wave-vc120-mt-1_59\
        -llibboost_wserialization-vc120-mt-1_59

LIBS += -L$(PCL_ROOT)/3rdParty/FLANN/lib\
        -lflann\
        -lflann_cpp_s\
        -lflann_s

LIBS += -LD:/pcl-1.8.0/OpenNI2/Lib\
        -lOpenNI2

LIBS += -L$(PCL_ROOT)/3rdParty/Qhull/lib\
        -lqhull\
        -lqhullcpp\
        -lqhullstatic\
        -lqhullstatic_r\
        -lqhull_p\
        -lqhull_r

LIBS += -L$(PCL_ROOT)/3rdParty/VTK/lib\
        -lvtkalglib-7.0\
        -lvtkChartsCore-7.0\
        -lvtkCommonColor-7.0\
        -lvtkCommonComputationalGeometry-7.0\
        -lvtkCommonCore-7.0\
        -lvtkCommonDataModel-7.0\
        -lvtkCommonExecutionModel-7.0\
        -lvtkCommonMath-7.0\
        -lvtkCommonMisc-7.0\
        -lvtkCommonSystem-7.0\
        -lvtkCommonTransforms-7.0\
        -lvtkDICOMParser-7.0\
        -lvtkDomainsChemistry-7.0\
        -lvtkDomainsChemistryOpenGL2-7.0\
        -lvtkexoIIc-7.0\
        -lvtkexpat-7.0\
        -lvtkFiltersAMR-7.0\
        -lvtkFiltersCore-7.0\
        -lvtkFiltersExtraction-7.0\
        -lvtkFiltersFlowPaths-7.0\
        -lvtkFiltersGeneral-7.0\
        -lvtkFiltersGeneric-7.0\
        -lvtkFiltersGeometry-7.0\
        -lvtkFiltersHybrid-7.0\
        -lvtkFiltersHyperTree-7.0\
        -lvtkFiltersImaging-7.0\
        -lvtkFiltersModeling-7.0\
        -lvtkFiltersParallel-7.0\
        -lvtkFiltersParallelImaging-7.0\
        -lvtkFiltersProgrammable-7.0\
        -lvtkFiltersSelection-7.0\
        -lvtkFiltersSMP-7.0\
        -lvtkFiltersSources-7.0\
        -lvtkFiltersStatistics-7.0\
        -lvtkFiltersTexture-7.0\
        -lvtkFiltersVerdict-7.0\
        -lvtkfreetype-7.0\
        -lvtkGeovisCore-7.0\
        -lvtkglew-7.0\
        -lvtkGUISupportQt-7.0\
        -lvtkGUISupportQtSQL-7.0\
        -lvtkhdf5-7.0\
        -lvtkhdf5_hl-7.0\
        -lvtkImagingColor-7.0\
        -lvtkImagingCore-7.0\
        -lvtkImagingFourier-7.0\
        -lvtkImagingGeneral-7.0\
        -lvtkImagingHybrid-7.0\
        -lvtkImagingMath-7.0\
        -lvtkImagingMorphological-7.0\
        -lvtkImagingSources-7.0\
        -lvtkImagingStatistics-7.0\
        -lvtkImagingStencil-7.0\
        -lvtkInfovisCore-7.0\
        -lvtkInfovisLayout-7.0\
        -lvtkInteractionImage-7.0\
        -lvtkInteractionStyle-7.0\
        -lvtkInteractionWidgets-7.0\
        -lvtkIOAMR-7.0\
        -lvtkIOCore-7.0\
        -lvtkIOEnSight-7.0\
        -lvtkIOExodus-7.0\
        -lvtkIOExport-7.0\
        -lvtkIOGeometry-7.0\
        -lvtkIOImage-7.0\
        -lvtkIOImport-7.0\
        -lvtkIOInfovis-7.0\
        -lvtkIOLegacy-7.0\
        -lvtkIOLSDyna-7.0\
        -lvtkIOMINC-7.0\
        -lvtkIOMovie-7.0\
        -lvtkIONetCDF-7.0\
        -lvtkIOParallel-7.0\
        -lvtkIOParallelXML-7.0\
        -lvtkIOPLY-7.0\
        -lvtkIOSQL-7.0\
        -lvtkIOVideo-7.0\
        -lvtkIOXML-7.0\
        -lvtkIOXMLParser-7.0\
        -lvtkjpeg-7.0\
        -lvtkjsoncpp-7.0\
        -lvtklibxml2-7.0\
        -lvtkmetaio-7.0\
        -lvtkNetCDF-7.0\
        -lvtkNetCDF_cxx-7.0\
        -lvtkoggtheora-7.0\
        -lvtkParallelCore-7.0\
        -lvtkpng-7.0\
        -lvtkproj4-7.0\
        -lvtkRenderingAnnotation-7.0\
        -lvtkRenderingContext2D-7.0\
        -lvtkRenderingContextOpenGL2-7.0\
        -lvtkRenderingCore-7.0\
        -lvtkRenderingFreeType-7.0\
        -lvtkRenderingImage-7.0\
        -lvtkRenderingLabel-7.0\
        -lvtkRenderingLOD-7.0\
        -lvtkRenderingOpenGL2-7.0\
        -lvtkRenderingQt-7.0\
        -lvtkRenderingVolume-7.0\
        -lvtkRenderingVolumeOpenGL2-7.0\
        -lvtksqlite-7.0\
        -lvtksys-7.0\
        -lvtktiff-7.0\
        -lvtkverdict-7.0\
        -lvtkViewsContext2D-7.0\
        -lvtkViewsCore-7.0\
        -lvtkViewsInfovis-7.0\
        -lvtkViewsQt-7.0\
        -lvtkzlib-7.0
}

注意:

1. 裏面 INCLUDEPATH 設置,把 OpenNI2 路徑改爲本身的。

2. 裏面我有幾行是註釋的,由於這個內容我是從別的帖粘過來的,而我安裝的這個版本的 PCL 有兩個庫是沒有的。

3. 理論上,以 release 方式編譯運行程序,只須要添加 release 版的庫就好了。這個 CONFIG(debug, debug|release) 的意思是根據程序須要自動選擇 debug 版本仍是 release 版本庫(先添加的是 debug,後面的是 release 版,看庫名字也能夠看出來)。這個 OpenNI 好像不支持調試,因此 debug 方式不能成功運行程序,我這裏是這樣的,因此我一直是以 release 方式運行。若是大家知道解決方法,歡迎下面留個言告知一下嘻嘻~~

好啦,到這裏就結束啦,開啓你的 Qt 之旅吧~~~

相關文章
相關標籤/搜索