1、可以迅速處理大量并發網絡資料包,ASIO庫和winpcap 4.1.3庫;
2、處理與顯示點雲模型資料,使用VTK 8.2.0庫;
3、項目使用CMake+VC2017編譯,GUI使用QT 5.12.5,Lib使用Boost 1.7.0與C++ 11;
4、開發工具QT Creator 4.1(VC2017輔助)、CMake 3.11.2,可以編譯32位與64位版本;
工具和庫的生成與配置:1、VS2017與QT 5.12.5,CMake 3.11.2開發環境直接官網下載下傳安裝即可。
2、Boost 1.7.0官網下載下傳庫,然後編譯成64位Debug與Release版本,操作參考
指令如下
b2 install --toolset=msvc-14.1 --prefix="D:ScanSourcedownloadBoostvc141" link=static runtime-link=shared threading=multi debug release
3、VTK 8.2.0官網下載下傳源碼,使用CMake-GUI工具,其中參數選擇支援QT,設定QT安裝路徑,執行編譯大概步驟如下:
QT5_DIR= C:QtQt5.12.65.12.6msvc2017_64libcmakeQt5(設定QT5的目錄)
CMAKE_INSTALL_PREFIX=D:ScanSourceVTKmsvc2017_64(編譯生成目錄)
編譯工程ALL_BUILD開始編譯生成庫檔案(VC中選擇要編譯的版本,我選擇64位的debug和release),完成後選擇編譯INSTALL,他會把庫與頭檔案拷貝到你設定的編譯生成目錄中。
4、winpcap 直接使用 VeloView項目中編譯後的檔案,編譯方法應該大體相同。
使用CMake建立項目:QTCreator與MSVC2017都支援通過CMakeLists.txt檔案建立項目,但是我發現MSVC2017的QT插件沒能識别出QT項目,需要配置QT環境變量挺麻煩的,是以我最後使用QTCreator工具,工具内可以直接設定CMake參數,CMake的文法提示做的也挺好的。
CMake項目主體結構
Src/CMakeLists.txt (項目配置資訊)
Src/main.cpp (項目所包含的cpp,h,cxx等等檔案)
Lib (項目所需要的庫檔案的 Lib include)
Build (通過CMake編譯出的項目檔案,如果使用MSVC工具會生成工程檔案,如果是QTCreator會生成一個Debug版本的對應平台的目錄)
bin (我在CMakeLists.txt設定的程式生成路徑,Debug與Release分開存放,包括exe、dll 、config檔案等等)
使用VC2107建立項目:1、使用QT Creator建立一個CMake版本的QWidget窗體項目,然後使用CMakeGUI根據建立的CMakeLists.txt生成VC2017項目。(我偷懶用QTCreator直接生成了)
2、在CMakeGUI上設定項目的源碼目錄與項目生成目錄,點選Configure,選擇VS2017 64位版本,點選Configure開始編譯,如果CMakeLists.txt設定引用庫,會提示設定該庫的路徑。

3、 設定QT5DIR,我的開發環境是VS2017_64,是以找到安裝的對應目錄C:/Qt/Qt5.12.5/5.12.5/msvc2017_64/lib/cmake/Qt5設定一下,重新配置,然後生成,然後就可以用VS2017打開項目了。設定VTK_DIR為 D:ScanSourceLibVTK-8.2.0libcmakevtk-8.2,設定Boost_INCLUDE_DIR為D:ScanSourceLibboost_1_70_0,項目就可以編譯通過,然後點選 Open Project,會使用MSVC2017打開項目。
CMake-GUI設定位置
使用QTCreator建立項目qtcreator工具可以直接設定CMake的參數,執行CMake指令就可以,沒有問題就可以編譯項目,其中CMakeLists.txt.user就是設定的變量儲存位置。
1、Boost引用
find_package(Boost 1.70.0 REQUIRED)
if(Boost_FOUND)
message(Boost_INCLUDE_DIRS " ${Boost_INCLUDE_DIRS}")
message(Boost_DIR " ${Boost_DIR}")
set(Boost_LIBRARY_DIR "D:/ScanSource/Lib/boost_1_70_0/vc141/lib")
endif()
include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIR})
2、VTK引用
find_package(VTK 8.2.0 REQUIRED)
if(VTK_FOUND)
message(VTK_DIR " ${VTK_DIR}")
endif()
.
.
.
include(${VTK_USE_FILE})
target_link_libraries(appname ${VTK_LIBRARIES})
3、測試版本
#include <boost/version.hpp>
#include <boost/config.hpp>
#include <vtkVersion.h>
#include <vtkConfigure.h>
static void PrintEnv()
{
std::cout << "==== DeviceLib Ver" << DEVICE_COMMON_VERSION << "===============" << std::endl;
std::cout << "掃描裝置驅動庫" << std::endl;
std::cout << "Boost 版本g:" << BOOST_VERSION << std::endl;
std::cout << "Boost Lib 版本:" << BOOST_LIB_VERSION << std::endl;
std::cout << "VTK 版本:" << VTK_VERSION << std::endl;
std::cout << "OS :" << BOOST_PLATFORM << std::endl;
std::cout << "編譯器:" << BOOST_COMPILER << std::endl;
std::cout << "标準庫:" << BOOST_STDLIB << std::endl;
std::cout << "============================" << std::endl;
}