cmake开发环境 linux qt_一步步搭建CMake+QT+VTK+BOOST开发环境
開發環境:
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:\ScanSource\download\Boost\vc141" link=static runtime-link=shared threading=multi debug release
3、VTK 8.2.0官網下載源碼,使用CMake-GUI工具,其中參數選擇支持QT,設置QT安裝路徑,執行編譯大概步驟如下:
QT5_DIR= C:\Qt\Qt5.12.6\5.12.6\msvc2017_64\lib\cmake\Qt5(設置QT5的目錄)
CMAKE_INSTALL_PREFIX=D:\ScanSource\VTK\msvc2017_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:\ScanSource\Lib\VTK-8.2.0\lib\cmake\vtk-8.2,
設置Boost_INCLUDE_DIR為D:\ScanSource\Lib\boost_1_70_0,項目就可以編譯通過,然后點擊 Open Project,會使用MSVC2017打開項目。CMake-GUI設置位置
使用QTCreator創建項目
qtcreator工具可以直接設置CMake的參數,執行CMake命令就可以,沒有問題就可以編譯項目,其中CMakeLists.txt.user就是設置的變量保存位置。
項目中引用Boost庫與VTK庫,并且測試
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
#include
#include
#include
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;
}
總結
以上是生活随笔為你收集整理的cmake开发环境 linux qt_一步步搭建CMake+QT+VTK+BOOST开发环境的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 李小璐和贾乃亮在一起了吗?
- 下一篇: 现在黄鹤楼香烟 软蓝 多少钱一条 武汉地