前言:最近在研究海思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" } ] }