dji Manifold2 C++开发
下载疆官方的onboard-sdk
的原始工程项目,并进入示例代码的目录:,使用如下命令将示例代码编译为示例程序:
1 2 3
| mkdir build && cd build cmake ..` 或 `cmake .. -DADVANCED_SENSING=ON make
|
执行示例程序
1. 复制配置文件
将配置文件UserConfig.txt
拷贝到bin文件中:
1
| cp ../sample/platform/linux/common/UserConfig.txt bin/
|
2. 输入程序运行命令(如下以运行flight control 示例代码为例)
1
| ./djiosdk-flightcontrol-sample UserConfig.txt UserConfig.txt
|
Cmake的使用
在文件的根目录下有一个CMakeLists.txt文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| cmake_minimum_required(VERSION 2.8) project(onboardsdk)
set(CMAKE_VERBOSE_MAKEFILE OFF)
set(DJIOSDK 0) set(DJIOSDK_MINOR_VERSION 1) set(DJIOSDK_PATCH_VERSION 0) set(DJIOSDK_VERSION ${DJIOSDK_MAJOR_VERSION}.${DJIOSDK_MINOR_VERSION}.${DJIOSDK_PATCH_VERSION})
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/libs)
if (ADVANCED_SENSING) add_definitions(-DADVANCED_SENSING) endif()
if(WAYPT2_CORE) add_definitions(-DWAYPT2_CORE) endif()
add_subdirectory(osdk-core)
if (${CMAKE_SYSTEM_NAME} MATCHES Linux) add_subdirectory(sample/platform/linux) endif()
|
需要重点关注add_subdirectory(sample/platform/linux)
,其作用在于:添加一个子目录并构建该子目录,告诉CMAKE我还有其它子目录的CMakeList.txt需要编译。
于是从该根目录下链接到./sample/platform/linux
目录下了,该目录下的CMakeLists.txt文件内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| cmake_minimum_required(VERSION 2.8) project(onboardsdk-linux-samples)
if(NOT ONBOARDSDK_SOURCE) set(ONBOARDSDK_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/../../../osdk-core") endif()
if(NOT MODULES_HEADER_DIR) set(MODULES_HEADER_DIR "${ONBOARDSDK_SOURCE}/modules/inc/payload") endif()
if(NOT FLIGHT_MODULES_HEADER_DIR) set(FLIGHT_MODULES_HEADER_DIR "${ONBOARDSDK_SOURCE}/modules/inc/flight") endif()
add_subdirectory(flight_GPStrack) add_subdirectory(flight_static_target)
if(ADVANCED_SENSING) add_definitions(-DADVANCED_SENSING) message(STATUS "AdvancedSensing sample is enabled") add_subdirectory(advanced-sensing) endif()
|
可以看到上面注释了很多add_subdirectory()
的代码,当想要进入某个子目录用编译器跑某个项目的代码时,就取消注释或者添加新的。最后的部分表示是否启用无人机的视觉部分,如果前面cmake
时添加了-DADVANCED_SENSING=ON
参数则会进入advanced-sensing
子目录进行编译。当然子目录下仍然有编译需要的CMakeLists.txt。
最后生成的可执行文件将会存放于根目录的./build/bin
目录中。