zoukankan      html  css  js  c++  java
  • ubuntu16.04 + vscode + cmake + hi3519 编译sample示例

    前言:最近在研究海思3519芯片,看sample的时候,使用的make生成执行程序。感觉修改程序比较麻烦,尝试在vscode上查看源码,感觉极度舒适。。。

    然后把sample的整个makefile文件仔细研究了一下,又把cmake原理和CmakeList.txt研究了一番。终于完成了使用vscode+cmake编译hi3519的sample示例程序。

    在这里以vio为例。

    3. 生成sample示例---vio为例

    3.1拷贝源文件

     将sample相关目录拷贝到指定目录下,我这里是10.cmake_sample

    3.2 配置CMakeLists.txt

    cmake_minimum_required(VERSION 3.0.0)
    
    project(main)
    
    #告知当前使用的是交叉编译方式,必须配置
    
    SET(CMAKE_SYSTEM_NAME Linux)
    
    #指定编译工具,一定要设置
    
    #或交叉编译器使用绝对地址
    
    SET(CMAKE_C_COMPILER "arm-himix200-linux-gcc")
    
    #指定C++交叉编译器
    
    SET(CMAKE_CXX_COMPILER "arm-himix200-linux-g++")
    
    # 开启调试信息
    
    set(CMAKE_BUILD_TYPE "Debug")
    
    set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
    
    set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
    
    # search for programs in the build host directories (not necessary)
    
    SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
    
    # for libraries and headers in the target directories
    
    SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
    
    SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
    
    # set(CMAKE_BUILD_TYPE "Release")
    
    # set(CMAKE_CXX_FLAGS_DEBUG "-O0 -Wall -g -ggdb")
    
    message(status "this is the binary dir:" ${project_binary_dir})
    
    message(status "this is the source dir:" ${project_source_dir})
    
    # set(CMAKE_BUILD_TYPE "Release")
    
    # set(CMAKE_CXX_FLAGS_DEBUG "-O0 -Wall -g -ggdb")
    
    #头文件所在的路径包含进去
    
    include_directories(${PROJECT_SOURCE_DIR}/smp
    
                        ${PROJECT_SOURCE_DIR}/include
    
                        ${PROJECT_SOURCE_DIR}/common
    
                        ${PROJECT_SOURCE_DIR}/audio)
    
    # add_subdirectory(common)
    # add_subdirectory(smp)
    #将整个项目的全部源文件添加到SrcFiles这个集合中
    
    aux_source_directory(. SrcFiles)
    
    aux_source_directory(./smp SrcFiles)
    
    aux_source_directory(./common SrcFiles)
    
    aux_source_directory(./audio/adp SrcFiles)
    
    #添加库目录
    
    link_directories(lib)
    
    #将可执行文件输出到文件夹bin中
    set(EXECUTABLE_OUTPUT_PATH  ${PROJECT_SOURCE_DIR}/bin)
    
    #link_directories("${PROJECT_SOURCE_DIR}/lib")
    add_executable(${PROJECT_NAME} ${SrcFiles})
    
    # 添加目标文件的依赖库
    
    #target_link_libraries(${PROJECT_NAME})
    
    target_link_libraries(${PROJECT_NAME} -lpthread -ldl -lm
    
                          libmpi.a
    
                          lib_hiae.a
    
                          libupvqe.a
    
                          libdnvqe.a
    
                          libisp.a
    
                          libVoiceEngine.a
    
                          lib_hidehaze.a
    
                          lib_hidrc.a
    
                          lib_hildci.a
    
                          lib_hicalcflicker.a
    
                          lib_hiawb.a
    
                          libsns_imx334.a
    
                          libsns_imx290.a
    
                          libsns_imx290_slave.a
    
                          libsns_imx307.a
    
                         
    
                          libhdmi.a
    
                          libdsp.a
    
                          libmotionfusion.a
    
                          libsecurec.a)

    整个项目结构如下:

    3.3 编译

    在vscode界面下方的状态栏中点击按钮:编译工具配置

    然后选择:GCC for arm-himix200-linux 6.30(具体版本看系统安装)

    在ctrl + S后生成build和bin目录

    再执行Bulid命令

     

    会再bin目录下生成main文件

     

    查看文件格式 file main,如下所示,说明创建成功!

     

    当然我们也可以自己创建一个tasks.json文件,利用Run Build Task(ctrl + shift +B)亦可以生成。这里tasks.json文件如下:(需要我们手动创建bin和bulid目录)

    {
    
        // See https://go.microsoft.com/fwlink/?LinkId=733558
    
        // for the documentation about the tasks.json format
    
        "version": "2.0.0",
    
        "tasks": [
    
            {
    
                "label": "build",
    
                "type": "shell",
    
                "command": "cd ./build ; cmake ../ -DCMAKE_BUILD_TYPE=Debug;make",
    
                "group": {
    
                    "kind": "build",
    
                    "isDefault": true
    
                }
    
            },
            {
    
                "label": "clean",
    
                "type": "shell",
    
                "command": "make clean"
    
            }
    
        ]
    
    }
  • 相关阅读:
    Pandas学习笔记,如何从DataFrame里选择一个Series
    数据结构_郝斌_数组
    数据结构_郝斌_预备知识2
    数据结构_郝斌_预备知识1
    数据结构_郝斌_目录
    数据结构_郝斌_链表
    Vocabulary Recitation 2020/04/08
    5月11号
    5月10号
    5月9号
  • 原文地址:https://www.cnblogs.com/haozhangcool/p/14476275.html
Copyright © 2011-2022 走看看