作者dzwei (int* arr, size_t length)
看板C_and_CPP
標題[心得] Vcpkg+CMake+Qml好用的跨平台編譯環境建置!
時間Sun Jan 5 01:34:29 2020
--------------------------
0.更新之處
--------------------------
2020.1.5 01:34 首次發文
--------------------------
1.前言
--------------------------
趁著當兵這個假日的空閒,
來發這篇文好了XD
本專案是玩票性質,
但因為小弟我想學東西,
內容有誤還麻煩各位大大指正!
有問題也可以在下方留言
--------------------------
2.動機
--------------------------
寫過C/C++以外的語言的人應該都知道
python有pip
rust有cargo
js有nodejs
...
等等。
C/C++好像沒有這樣好用的
跨平台(OS/HW)雲端化的套件管理器
vcpkg也是我最近發現有此功能的工具之一
(雖然好像2016就有了QQ)
搭配CMake的find_package()
可以使整個專安有類似dependencies的功能
vcpkg收錄了不少好用常見的C++ API
opencv, opencl等都有。
它會在git-reposity抓下專案的src,
再進行編譯,
所以請事先架好一些編譯環境
(MSVC GNU-GCC等)
vcpkg安裝目錄裡,
有自己的一套路徑,
很像Linux中usr的
bin, include, lib ...等等
cmake
-DCMAKE_TOOLCHAIN_FILE=C:/SDKs/vcpkg/scripts/buildsystems/vcpkg.cmake
.
上面這個指令,
會自動處理include, lib
也就是說在CMakelists.txt中基本上只要
find_package()這指令就夠了
不用因電腦不同而重新更改include_path、link_path..等等那些有的沒的
(這點很像Linux的/usr)
這也是vcpkg強大的地方之一
只要確認任bin東西已經在環境變數path裡面
Link也不會有問題了
--------------------------
3.目的
--------------------------
以Vcpkg作為套件管理器,
以CMake取代QMake,
(QMake我還沒找到能簡單直接嵌入vcpkg的方法 QQ)
並可成功建置QML專案(完全不需要去載QtCreator那些套件),
Linux和Win都可以編譯。
--------------------------
4.專案碼與進度
--------------------------
檔案在此
https://bitbucket.org/dzwei/vcpkg_cmake_qtqml
目前進度: Win10可以建置
Linux有空再嘗試
(本身用Arch,
AUR已經夠好用了XD
所以之後會找時間再試試)
--------------------------
5.建置說明
--------------------------
大部分再readme.md有說的清楚了(應該吧?!)
所以我提示幾個重點:
0.確保網路穩定
1.vs2019要先安裝,ATL&MFC也要裝好
2.初次安裝vcpkg,要以系統管理員的身分,
在win下建議使用powershell
3.記得檢查:
C:\SDKs\vcpkg\installed\x64-windows\bin
C:\SDKs\vcpkg\installed\x64-windows\debug\bin
(4的,我把vcpkg安裝在C:\SDKs)
是否有在,Path裡面
我曾經因為這樣(第二行那個沒在環境變數Path裡面),
de半個早上bug才發現這件事QQ
--------------------------
6.已知問題(我碰到的)
--------------------------
安裝Qt5的時候,
使用vcpkg在win10下安裝Qt-speech:x64_windows
會無法安裝,
已通報issue給vcpkg帶解答,
目前這樣是不影響本例題。
--------------------------
寫在最後(工商時間)
--------------------------
最近發現,如果習慣C++的人
可能會喜歡Rust而不是Go
原因就給大家去餵狗吧XD
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.194.16.146 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1578159273.A.A24.html
※ 編輯: dzwei (123.194.16.146 臺灣), 01/05/2020 01:53:20
※ 編輯: dzwei (42.76.131.148 臺灣), 01/05/2020 02:06:56
推 plsmaop: go 有 GC 啊,rust 沒有啊 01/05 13:22
阿對 我忘了補上去XD
Rust內建的cargo我覺得不差壓
※ 編輯: dzwei (123.194.16.146 臺灣), 01/05/2020 13:48:44
推 vm0: 還有conan,最近gitlab也有採用 01/05 14:11
謝謝大大提供一個不錯的選擇
※ 編輯: dzwei (123.194.16.146 臺灣), 01/05/2020 14:25:48