# MAVSDK Cpp ## 1. 必要配備 要載好git跟編譯器(用microsoft visual studio比較快,直接去官網載按安裝就好)gcc或clang也可以(裝完去環境變數改) ## 2. 下載cmake 版本可能需要多試幾次,[官網](https://cmake.org/download/)先試最新版,後面compile有問題再換版本,windows載Windows x64 Installer,linux載Linux x86_64.sh。安裝就點開,path的那項記得打勾。 載完可能需要重開機,去更新windows環境。 ## 3. 下載MAVSDK source code ``` git clone https://github.com/mavlink/MAVSDK.git --recursive ``` --recursive確保所有submodule都有載到 ## 4. 根據自己的系統(linux or window)安裝Library 跟著[官網](https://mavsdk.mavlink.io/main/en/cpp/guide/build.html)做 ### windows 打開terminal,使用cd指令前往妳下載mavsdk sourcecode的地方。 如果在D槽打D:前往D槽的位置 #### windows編譯Debug library ``` cmake -Bbuild/default -H. -DCMAKE_BUILD_TYPE=Debug cmake --build build/default -j8 --config Release ``` 這個部分有時候會出問題 ##### 1. Build on Linux gives error: jsoncpp does not appear to contain CMakeLists.txt 手動把thrirdparty/jsoncpp裡的 CMakeLists.txt丟進build/default/third_party/jsoncpp 這類的都這樣解。 ##### 2.No type named 'atomic' in namespace 'std' 在error出現的檔案中增加標頭檔 ```cpp #include <atomic> ``` ##### 3.warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss 打開MAVSDK\src\mavsdk\core\mavsdk_impl.cpp 在大概100行左右會出現一個表情符號,刪了他就好了。 #### windows編譯Release library ``` cmake -Bbuild/default -DCMAKE_BUILD_TYPE=Release -H. cmake --build build/default -j8 --config Release ``` 確定自己的code沒問題不用Debug再用這個。 #### windows安裝libarary 以系統管理員身分開啟cmd並在MAVSDK執行 ``` cmake --build build/default --target install ``` ## 5. 接下來就是寫code時間囉 ## 6. 寫完了就要編譯 在寫完的.cpp檔資料夾中,加一個CMakeLists.txt,裡面的內容長 ```cmake= cmake_minimum_required(VERSION 3.10.2) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) project(telemetry) add_executable(telemetry telemetry.cpp ) find_package(MAVSDK REQUIRED) target_link_libraries(telemetry MAVSDK::mavsdk ) if(NOT MSVC) add_compile_options(telemetry PRIVATE -Wall -Wextra) else() add_compile_options(telemetry PRIVATE -WX -W2) endif() ``` 如果要添加thread功能,要多加幾句長這樣 ```cmake= cmake_minimum_required(VERSION 3.10.2) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) project(datareceive) add_executable(datareceive datareceive.cpp ) find_package(MAVSDK REQUIRED) find_package(Threads REQUIRED) target_link_libraries(datareceive MAVSDK::mavsdk Threads::Threads ) if(NOT MSVC) add_compile_options(datareceive PRIVATE -Wall -Wextra) else() add_compile_options(datareceive PRIVATE -WX -W2) endif() ``` 之後cmake在編譯時就會自己幫你幫前面安裝的標頭檔處理好 ### 編譯要使用幾個指令 ```bash= cd 檔案所在的位置\ cmake -Bbuild -H. cmake --build build -j4 ``` ## 編譯成功就要執行囉 ```bash= cd 檔案所在的位置\build\Debug 執行檔名稱 連接的port e.g. build/takeoff_and_land.exe udp://:14540 ``` 這裡有可能執行失敗,跳出通知說缺少mavsdk.dll,這是MAVSDK的bug,不知道甚麼時候才會修好,去找到MAVSDK\build\default資料夾裡的mavsdk.dll丟到執行檔旁邊就可以執行了。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up