Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在Debian 10上为板载SDK项目创建CMakeList.txt_C++_Cmake_Raspberry Pi_Debian_Dji Sdk - Fatal编程技术网

C++ 如何在Debian 10上为板载SDK项目创建CMakeList.txt

C++ 如何在Debian 10上为板载SDK项目创建CMakeList.txt,c++,cmake,raspberry-pi,debian,dji-sdk,C++,Cmake,Raspberry Pi,Debian,Dji Sdk,我想编译我自己的项目。我的**make**有错误cmake..工作正常 我试图在/boardsdk/sample/platform/telemetry中编译这个示例。 我在遥测目录中创建了mkdir和cd 这是我的CMakeList.txt cmake_minimum_required(VERSION 2.8) project(djiosdk-telemetry-sample) # Compiler flags: link with pthread and enable C++11 suppo

我想编译我自己的项目。我的
**make**
有错误<代码>cmake..工作正常

我试图在/boardsdk/sample/platform/telemetry中编译这个示例。 我在遥测目录中创建了mkdir和cd

这是我的CMakeList.txt

cmake_minimum_required(VERSION 2.8)
project(djiosdk-telemetry-sample)

# Compiler flags: link with pthread and enable C++11 support
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread -g -O0")

# Tell the project where osdk-core is located
if(NOT ONBOARDSDK_SOURCE)
    set(ONBOARDSDK_SOURCE "/home/pi/Onboard-SDK/osdk-core")
    #set(ONBOARDSDK_SOURCE "/usr/local/include")

endif()

# Specify locations for osdk-core headers
include_directories(${ONBOARDSDK_SOURCE}/api/inc)
include_directories(${ONBOARDSDK_SOURCE}/utility/inc)
include_directories(${ONBOARDSDK_SOURCE}/hal/inc)
include_directories(${ONBOARDSDK_SOURCE}/protocol/inc)
include_directories(${ONBOARDSDK_SOURCE}/platform/linux/inc)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../hal)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../osal)
include_directories(include /usr/local/include)
include_directories(${ONBOARDSDK_SOURCE}/../sample/core/inc)

# User-code related project files
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../common)
FILE(GLOB SOURCE_FILES *.hpp *.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/../common/dji_linux_environment.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/../common/dji_linux_helpers.cpp
    main.cpp
    telemetry_sample.cpp
    )

if (OSDK_HOTPLUG)
    FILE(GLOB SOURCE_FILES ${SOURCE_FILES} ${CMAKE_CURRENT_SOURCE_DIR}/../hal/hotplug/*.c)
endif ()

# Target and linking
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
target_link_libraries(${PROJECT_NAME} djiosdk-core)
这是制作后的结果

[ 20%] Linking CXX executable djiosdk-telemetry-sample
/usr/bin/ld: //usr/local/lib/libdjiosdk-core.a(dji_legacy_linker.cpp.o): in function `DJI::OSDK::LegacyLinker::legacyX5SEnableTask(void*)':
/home/pi/Onboard-SDK/osdk-core/api/src/dji_legacy_linker.cpp:69: **undefined reference to `DJI::OSDK**::Linker::getLocalSenderId()'
/usr/bin/ld: /home/pi/Onboard-SDK/osdk-core/api/src/dji_legacy_linker.cpp:71: **undefined reference** to `OsdkOsal_TaskSleepMs'
/usr/bin/ld: /home/pi/Onboard-SDK/osdk-core/api/src/dji_legacy_linker.cpp:72: **undefined reference** to `**DJI::OSDK**::Linker::isUSBPlugged()'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/djiosdk-telemetry-sample.dir/build.make:129: djiosdk-telemetry-sample] Error 1
make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/djiosdk-telemetry-sample.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
我经常链接CXX可执行文件djiosdk遥测样本。 主要问题在于“未定义的引用”。 我根据以下内容创建CMakeList.txt:


我应该怎么做?

创建您自己的项目所需的正确的CMakeList.txt(基于遥测样本的示例):

cmake_最低要求(2.8版)
项目(djiosdk遥测样本)
套件(拱臂V7)
#编译器标志:与pthread链接并启用C++11支持
设置(CMAKE_CXX_标志“${CMAKE_CXX_标志}-std=c++11-pthread-g-O0”)
#告诉项目osdk核心的位置
if(非车载SDK_源)
设置(车载SDK_源代码)/主页/pi/车载SDK/osdk核心)
endif()
设置(当前\u CMAKE\u模块\u路径${ONBOARDSDK\u源代码}/CMAKE模块)
#指定osdk核心标头的位置
包含目录(${ONBOARDSDK\u SOURCE}/api/inc)
包含目录(${ONBOARDSDK\u SOURCE}/utility/inc)
包括目录(${ONBOARDSDK\u SOURCE}/hal/inc)
包括目录(${ONBOARDSDK\u SOURCE}/protocol/inc)
包括目录(${ONBOARDSDK\u SOURCE}/platform/linux/inc)
包含目录(${ONBOARDSDK\u SOURCE}/linker/${ARCH}/inc)
包括目录(${ONBOARDSDK\u SOURCE}/。/sample/platform/linux/hal)
包括目录(${ONBOARDSDK\u SOURCE}/。/sample/platform/linux/hal/hotplug)
包括目录(${ONBOARDSDK\u SOURCE}/。/sample/platform/linux/osal)
包含目录(include/usr/local/include)
include_目录(include/usr/local/lib)
包括目录(${ONBOARDSDK\u SOURCE}/。/sample/core/inc)
#与用户代码相关的项目文件
包括目录(${ONBOARDSDK\u SOURCE}/。/sample/platform/linux/common)
文件(全局源文件*.hpp*.cpp)
${ONBOARDSDK_SOURCE}/./sample/platform/linux/common/dji_linux_environment.cpp
${ONBOARDSDK_SOURCE}/./sample/platform/linux/common/dji_linux_helpers.cpp
${ONBOARDSDK_SOURCE}/./sample/platform/linux/hal/osdkhal_linux.c
${ONBOARDSDK_SOURCE}/./sample/platform/linux/osal/osdkosal_linux.c
)
if(OSDK_热插拔)
文件(GLOB SOURCE_FILES${SOURCE_FILES}${ONBOARDSDK_SOURCE}/./sample/platform/linux/hal/hotplug/*.c)
endif()
链接库(dji链接器)
链接目录(/usr/local/include/usr/local/lib)
link_库(${ONBOARDSDK_SOURCE}/linker/${ARCH}/lib/libdji linker.a)
集合(CMAKE_模块_路径${CURRENT_CMAKE_模块_路径})
查找_包(需要LibUSB)
查找_包(需要FFMPEG)
包含目录(${ADVANCED\u SENSING\u HEADERS\u DIR})
#目标和链接
添加可执行文件(${PROJECT\u NAME}${SOURCE\u FILES})
目标链接库(${PROJECT\u NAME}PUBLIC djiosdk core)
目标链接库(${PROJECT\u NAME}公共dji链接器)
目标链接库(${PROJECT\u NAME}PUBLIC${ONBOARDSDK\u SOURCE}/linker/${ARCH}/lib/libdji linker.a)
目标目录(${PROJECT\u NAME}PUBLIC${LIBUSB\u 1\u include\u DIRS})
目标链接库(${PROJECT\u NAME}PUBLIC${LIBUSB\u 1\u libraries})
目标链接库(${PROJECT\u NAME}公共${FFMPEG\u库})
目标目录(${PROJECT\u NAME}PUBLIC$)
目标链接库(${PROJECT\u NAME}私有高级感知)
目标目录(${PROJECT\u NAME}PUBLIC${FFMPEG\u include\u DIR})
目标链接库(${PROJECT\u NAME}公共${FFMPEG\u库})

我不确定osdk库的具体情况,但似乎您正在尝试将可执行文件链接到
djiosdk core
。您需要指定CMake应该如何查找
djiosdk core.a(或.so)
。如果您知道使用指定它,您知道如何实现查找此核心的代码吗?我开始创建cmake。我正在使用:
git clone&&cd&&mkdir build&&cd build&&cmake..&&make-j4&&make-install
->这应该将lib放在/usr/local/lib中,并在/usr/local/include中包含文件--您可以从这里开始我添加了:link_库(dji链接器)link_库(${ONBOARDSDK_-SOURCE}/linker/${ARCH}/lib dji linker.a)target_链接库(${PROJECT_-NAME}PUBLIC${ONBOARDSDK_-SOURCE}/linker/${ARCH}/lib/libdji linker.a)target_include_目录(${PROJECT_NAME}PUBLIC${LIBUSB_1_include_DIRS})target_链接库(${PROJECT_NAME}PUBLIC${LIBUSB_1_libraries})target_链接库(${PROJECT_NAME}PUBLIC${FFMPEG_libraries})target链接库(${PROJECT_NAME}PRIVATE advanced sensing)但我仍然有一些错误。我想有一个库要添加,但不知道是哪个库。
cmake_minimum_required(VERSION 2.8)
project(djiosdk-telemetry-sample)

set(ARCH armv7)

# Compiler flags: link with pthread and enable C++11 support
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread -g -O0")


# Tell the project where osdk-core is located
if(NOT ONBOARDSDK_SOURCE)
    set(ONBOARDSDK_SOURCE "/home/pi/Onboard-SDK/osdk-core")
endif()
set(CURRENT_CMAKE_MODULE_PATH ${ONBOARDSDK_SOURCE}/cmake-modules)

# Specify locations for osdk-core headers
include_directories(${ONBOARDSDK_SOURCE}/api/inc)
include_directories(${ONBOARDSDK_SOURCE}/utility/inc)
include_directories(${ONBOARDSDK_SOURCE}/hal/inc)
include_directories(${ONBOARDSDK_SOURCE}/protocol/inc)
include_directories(${ONBOARDSDK_SOURCE}/platform/linux/inc)
include_directories(${ONBOARDSDK_SOURCE}/linker/${ARCH}/inc)
include_directories(${ONBOARDSDK_SOURCE}/../sample/platform/linux/hal)
include_directories(${ONBOARDSDK_SOURCE}/../sample/platform/linux/hal/hotplug)
include_directories(${ONBOARDSDK_SOURCE}/../sample/platform/linux/osal)
include_directories(include /usr/local/include)
include_directories(include /usr/local/lib)
include_directories(${ONBOARDSDK_SOURCE}/../sample/core/inc)


# User-code related project files
include_directories(${ONBOARDSDK_SOURCE}/../sample/platform/linux/common)
FILE(GLOB SOURCE_FILES *.hpp *.cpp
    ${ONBOARDSDK_SOURCE}/../sample/platform/linux/common/dji_linux_environment.cpp
    ${ONBOARDSDK_SOURCE}/../sample/platform/linux/common/dji_linux_helpers.cpp
    ${ONBOARDSDK_SOURCE}/../sample/platform/linux/hal/osdkhal_linux.c
    ${ONBOARDSDK_SOURCE}/../sample/platform/linux/osal/osdkosal_linux.c
    )

if (OSDK_HOTPLUG)
    FILE(GLOB SOURCE_FILES ${SOURCE_FILES} ${ONBOARDSDK_SOURCE}/../sample/platform/linux/hal/hotplug/*.c)
endif ()

link_libraries(dji-linker)
link_directories(/usr/local/include /usr/local/lib)
link_libraries(${ONBOARDSDK_SOURCE}/linker/${ARCH}/lib/libdji-linker.a)

set(CMAKE_MODULE_PATH ${CURRENT_CMAKE_MODULE_PATH})
find_package(LibUSB REQUIRED)
find_package(FFMPEG REQUIRED)
include_directories(${ADVANCED_SENSING_HEADERS_DIR})

# Target and linking
add_executable(${PROJECT_NAME} ${SOURCE_FILES})

target_link_libraries(${PROJECT_NAME} PUBLIC djiosdk-core)
target_link_libraries(${PROJECT_NAME} PUBLIC  dji-linker)
target_link_libraries(${PROJECT_NAME} PUBLIC ${ONBOARDSDK_SOURCE}/linker/${ARCH}/lib/libdji-linker.a)
target_include_directories(${PROJECT_NAME} PUBLIC ${LIBUSB_1_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} PUBLIC ${LIBUSB_1_LIBRARIES})
target_link_libraries(${PROJECT_NAME} PUBLIC ${FFMPEG_LIBRARIES})
target_include_directories(${PROJECT_NAME} PUBLIC $<BUILD_INTERFACE:${ADVANCED_SENSING_HEADERS_DIR}>)
target_link_libraries(${PROJECT_NAME} PRIVATE advanced-sensing)
target_include_directories(${PROJECT_NAME} PUBLIC ${FFMPEG_INCLUDE_DIR})
target_link_libraries(${PROJECT_NAME} PUBLIC ${FFMPEG_LIBRARIES})