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

ubuntu16.04 + vscode + cmake + hi3519 编译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)

整个项目结构如下:

ubuntu16.04 + vscode + cmake + hi3519 编译sample示例

3.3 编译

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

ubuntu16.04 + vscode + cmake + hi3519 编译sample示例

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

ubuntu16.04 + vscode + cmake + hi3519 编译sample示例

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

ubuntu16.04 + vscode + cmake + hi3519 编译sample示例

再执行Bulid命令

 ubuntu16.04 + vscode + cmake + hi3519 编译sample示例

会再bin目录下生成main文件

 ubuntu16.04 + vscode + cmake + hi3519 编译sample示例

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

 ubuntu16.04 + vscode + cmake + hi3519 编译sample示例

当然我们也可以自己创建一个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"

        }

    ]

}

 

ubuntu16.04 + vscode + cmake + hi3519 编译sample示例

上一篇:Learning_the_bash_Shell_Third_Edition 8/n


下一篇:计算shell 脚本的执行时间