Before running the sample, set the Vision SDK environment variables.
source {Vision SDK installation directory}/mxVision/set_env.sh
Compilation
- Prepare the source code file main.cpp and the CMakeLists.txt file. Refer to the following commands to compile 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 | # CMake lowest version requirement
cmake_minimum_required(VERSION 3.5.2)
# project information
project(MindX_SDK_Sample)
set(MX_SDK_HOME $ENV{MX_SDK_HOME})
if (NOT DEFINED ENV{MX_SDK_HOME})
string(REGEX REPLACE "(.*)/(.*)/(.*)/(.*)" "\\1" MX_SDK_HOME ${CMAKE_CURRENT_SOURCE_DIR})
message(STATUS "set default MX_SDK_HOME: ${MX_SDK_HOME}")
else ()
message(STATUS "env MX_SDK_HOME: ${MX_SDK_HOME}")
endif()
# Compile options
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
add_definitions(-Dgoogle=mindxsdk_private)
add_compile_options(-std=c++14 -fPIC -fstack-protector-all -Wall)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
set(CMAKE_CXX_FLAGS_DEBUG "-g")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,relro,-z,now,-z,noexecstack -s -pie")
set(CMAKE_SKIP_RPATH TRUE)
# add mxbase header path
include_directories(
${MX_SDK_HOME}/include/
${MX_SDK_HOME}/opensource/include/
${MX_SDK_HOME}/opensource/opencv4/
)
# add mxbase lib path
link_directories(
${MX_SDK_HOME}/lib/
${MX_SDK_HOME}/lib/modelpostprocessors/
${MX_SDK_HOME}/opensource/lib/
${MX_SDK_HOME}/opensource/lib64/
)
add_executable(main main.cpp)
target_link_libraries(main glog mxbase opencv_world pthread mindxsdk_protobuf)
install(TARGETS main DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
|
- CMake compilation.
- Create the build directory in the directory where the CMakeLists.txt file is located.
- Go to the build directory.
- Run the cmake command.
- Run the make command to generate the main executable file.
Running
Run the executable file (execution program) generated after compilation.
- If "undefined reference to symbol 'absl_xxx', error adding symbols: DSO missing from command line" is displayed during compilation or running, add the link options -Wl, --no-as-needed -Wl, and --copy-dt-needed-entries to the executable program.