当前位置: 首页 > news >正文

安卓做视频网站好广州网站设计公司排名

安卓做视频网站好,广州网站设计公司排名,免费高清无专码区,wordpress 按销量1.编译多个源程序时CMakeLists文件编写 1.若源程序目录结构如下: main.cpp中include“LCD_2inch4.h”头文件,而LCD_2inch4.h中include其它源程序,则CmakeLists.txt文件可为如下: # 设置项目名称 cmake_minimum_required(VERSI…

1.编译多个源程序时CMakeLists文件编写

1.若源程序目录结构如下:

在这里插入图片描述

main.cpp中include“LCD_2inch4.h”头文件,而LCD_2inch4.h中include其它源程序,则CmakeLists.txt文件可为如下:
# 设置项目名称  
cmake_minimum_required(VERSION 3.10) # 确保CMake版本足够新  
project(MyProject)  set(CMAKE_SYSTEM_NAME Linux)
#set(CMAKE_SYSTEM_PROCESSOR arm)set(tools /home/tao/linux/milkv-duo256/host-tools/gcc/riscv64-linux-musl-x86_64)#set(CMAKE_SYSROOT ${tools}/sysroot)
set(CMAKE_C_COMPILER ${tools}/bin/riscv64-unknown-linux-musl-gcc)
set(CMAKE_CXX_COMPILER ${tools}/bin/riscv64-unknown-linux-musl-g++)
set(CMAKE_AR ${tools}/bin/riscv64-unknown-linux-musl-ar)
set(CMAKE_RANLIB ${tools}/bin/riscv64-unknown-linux-musl-ranlib)# 定义目录变量  
set(DIR_Config   "${CMAKE_SOURCE_DIR}/lib/Config")  
set(DIR_EPD      "${CMAKE_SOURCE_DIR}/lib/LCD")  
set(DIR_FONTS    "${CMAKE_SOURCE_DIR}/lib/Fonts")  
set(DIR_GUI      "${CMAKE_SOURCE_DIR}/lib/GUI")  
set(DIR_Examples "${CMAKE_SOURCE_DIR}/examples")  
set(DIR_wiringx "/home/tao/linux/milkv-duo256/duo-examples/duo-sdk/rootfs/usr")
set(DIR_BIN      "${CMAKE_SOURCE_DIR}/bin")  
#wiringx是main.cpp中include的其他头文件# 设置编译选项  
set(CMAKE_CXX_STANDARD 11) # 假设您使用C++ (如果是C,请使用CMAKE_C_STANDARD)  
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -Wall")  # 定义USELIB变量并基于它决定是否链接库  这部分if判断可省去
set(USELIB "USE_DEV_LIB")  
if("${USELIB}" STREQUAL "USE_DEV_LIB")  set(LIBS pthread m)  
else()  set(LIBS "")  
endif()  # 添加包含目录  ,即头文件所在目录
include_directories(  ${DIR_Config}  ${DIR_EPD}  ${DIR_GUI}  ${DIR_FONTS}  ${DIR_Examples}  "${DIR_wiringx}/include"
)  # 添加源文件并设置目标  ,有源程序的文件夹
file(GLOB_RECURSE SRC_LIST  "${DIR_EPD}/*.c"  "${DIR_Config}/*.c"  "${DIR_GUI}/*.c"  "${DIR_Examples}/*.cpp"  "${DIR_FONTS}/*.c"  
)  #for opencv ,main中使用了opencv,不使用则可以不加
set(OpenCV_DIR "/home/tao/linux/milkv-duo256/duo-examples/opencv-mobile-milkv/opencv-mobile-4.9.0-milkv-duo/lib/cmake/opencv4")
find_package(OpenCV REQUIRED)
#添加opencv头文件
include_directories(${OpenCV_INCLUDE_DIRS})#指定由源程序生成可执行程序main,可换为其它名字
add_executable(main ${SRC_LIST})  # 查找库文件,指定搜索路径 ,添加第三方库时使用fnd_library,命令,之后 arget_link_libraries命令添加库
find_library(MY_LIB NAMES wiringx PATHS /home/tao/linux/milkv-duo256/duo-examples/duo-sdk/rootfs/usr/lib NO_DEFAULT_PATH)  # 如果USELIB是USE_DEV_LIB,则链接pthread和m库  
if("${USELIB}" STREQUAL "USE_DEV_LIB")  target_link_libraries(main ${LIBS} ${MY_LIB} ${OpenCV_LIBS} )  
endif()  # 设置输出目录为DIR_BIN(注意:CMake默认使用build目录,但可以通过设置CMAKE_ARCHIVE_OUTPUT_DIRECTORY等变量来改变)  
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${DIR_BIN})  
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${DIR_BIN})  
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${DIR_BIN})  # 清理规则(CMake不直接支持Makefile的clean目标,但可以使用make clean或自定义命令)  
# 在CMake中,通常使用`cmake --build . --target clean`来清理,这需要在项目根目录的CMakeLists.txt中定义clean目标  
# 这里为了简单起见,我们不定义clean目标  # 如果需要交叉编译,可以设置工具链文件或使用CMAKE_TOOLCHAIN_FILE变量  
# 例如:set(CMAKE_TOOLCHAIN_FILE "path/to/toolchain.cmake")  
# 注意:这需要在您的toolchain.cmake文件中定义交叉编译器的路径和其他相关设置  # 如果您使用的是C而不是C++,请将add_executable替换为add_executable并相应地更改变量名(例如CMAKE_C_FLAGS)
之后在bin目录中cmake … && make命令编译

2.将一些驱动源程序生成动态库so,方便调用

1.main.c每次调用LCD_2inch4.h中的函数需要一起编译这四个源程序文件夹,太麻烦,可将LCD的程序生成so动态链接库,CMakeLists.txt如下:
# 设置项目名称  
cmake_minimum_required(VERSION 3.10) # 确保CMake版本足够新  
project(MyProject)  set(CMAKE_SYSTEM_NAME Linux)
#指定编译器
set(tools /home/tao/linux/milkv-duo256/host-tools/gcc/riscv64-linux-musl-x86_64)set(CMAKE_C_COMPILER ${tools}/bin/riscv64-unknown-linux-musl-gcc)
set(CMAKE_CXX_COMPILER ${tools}/bin/riscv64-unknown-linux-musl-g++)
set(CMAKE_AR ${tools}/bin/riscv64-unknown-linux-musl-ar)
set(CMAKE_RANLIB ${tools}/bin/riscv64-unknown-linux-musl-ranlib)# 定义目录变量  ,wiringx是调用外部的库,bin是指定生成的结果文件存放的地方
set(DIR_Config   "${CMAKE_SOURCE_DIR}/lib/Config")  
set(DIR_EPD      "${CMAKE_SOURCE_DIR}/lib/LCD")  
set(DIR_FONTS    "${CMAKE_SOURCE_DIR}/lib/Fonts")  
set(DIR_GUI      "${CMAKE_SOURCE_DIR}/lib/GUI")   
set(DIR_wiringx "/home/tao/linux/milkv-duo256/duo-examples/duo-sdk/rootfs/usr")
set(DIR_BIN      "${CMAKE_SOURCE_DIR}/bin")  # 设置编译选项  
set(CMAKE_CXX_STANDARD 11) # 假设您使用C++ (如果是C,请使用CMAKE_C_STANDARD)  
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -Wall")  
set(LIBS pthread m)  
# 添加包含目录  
include_directories(  ${DIR_Config}  ${DIR_EPD}  ${DIR_GUI}  ${DIR_FONTS}  "${DIR_wiringx}/include"
)  
# 添加源文件并设置目标  
file(GLOB_RECURSE SRC_LIST  "${DIR_EPD}/*.c"  "${DIR_Config}/*.c"  "${DIR_GUI}/*.c"   "${DIR_FONTS}/*.c"  
)  # 查找库文件,指定搜索路径  
find_library(MY_LIB NAMES wiringx PATHS /home/tao/linux/milkv-duo256/duo-examples/duo-sdk/rootfs/usr/lib NO_DEFAULT_PATH)  
#指定库名为lcd2in4,生成的文件叫做liblcd2in4.so
add_library(lcd2in4 SHARED ${SRC_LIST})target_link_libraries(lcd2in4 ${LIB} ${MY_LIB})  #添加需要使用的库# 设置输出目录为DIR_BIN(注意:CMake默认使用build目录,但可以通过设置CMAKE_ARCHIVE_OUTPUT_DIRECTORY等变量来改变)  
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${DIR_BIN})  
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${DIR_BIN})  
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${DIR_BIN})  
在bin目录使用cmake … && make即可生成库liblcd2inch4.so
  1. 把main.c中include""LCD_2inch4.h"改为lcd2inch4.h
  2. 新建一个lcd2inch4.h文件,内容就是原来main.c调用的LCD_2inch4.h中的内容,名字是否需要必须和库名字一样不清楚,这里是一样的。
  3. 将h文件 和so文件任意放在哪个位置,只需在CMakeLists.txt中find_librarys时指定so库文件位置即可
  4. 在这里插入图片描述
  5. CMakeLists.txt可为下:
# 设置项目名称  
cmake_minimum_required(VERSION 3.10) # 确保CMake版本足够新  
project(MyProject)  set(CMAKE_SYSTEM_NAME Linux)
#set(CMAKE_SYSTEM_PROCESSOR arm)set(tools /home/tao/linux/milkv-duo256/host-tools/gcc/riscv64-linux-musl-x86_64)#set(CMAKE_SYSROOT ${tools}/sysroot)
set(CMAKE_C_COMPILER ${tools}/bin/riscv64-unknown-linux-musl-gcc)
set(CMAKE_CXX_COMPILER ${tools}/bin/riscv64-unknown-linux-musl-g++)
set(CMAKE_AR ${tools}/bin/riscv64-unknown-linux-musl-ar)
set(CMAKE_RANLIB ${tools}/bin/riscv64-unknown-linux-musl-ranlib)# 定义目录变量  
set(DIR_Examples "${CMAKE_SOURCE_DIR}/examples")  
set(DIR_wiringx "/home/tao/linux/milkv-duo256/duo-examples/duo-sdk/rootfs/usr")
set(DIR_BIN      "${CMAKE_SOURCE_DIR}/bin")  # 设置编译选项  
set(CMAKE_CXX_STANDARD 11) # 假设您使用C++ (如果是C,请使用CMAKE_C_STANDARD)  
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -Wall")  set(LIBS pthread m)  # 添加包含目录  
include_directories(  ${DIR_Examples}  "${DIR_wiringx}/include"
)  # 添加源文件并设置目标  
file(GLOB_RECURSE SRC_LIST  "${DIR_Examples}/*.cpp"   
)  
#for opencv,不使用则不添加
set(OpenCV_DIR "/home/tao/linux/milkv-duo256/duo-examples/opencv-mobile-milkv/opencv-mobile-4.9.0-milkv-duo/lib/cmake/opencv4")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})add_executable(main ${SRC_LIST})  # 查找库文件,指定搜索路径  
find_library(MY_LIB NAMES wiringx PATHS /home/tao/linux/milkv-duo256/duo-examples/duo-sdk/rootfs/usr/lib NO_DEFAULT_PATH)  find_library(LCD_LIB NAMES lcd2in4 PATHS  ${DIR_Examples}  NO_DEFAULT_PATH) target_link_libraries(main ${LIBS} ${MY_LIB} ${OpenCV_LIBS} ${LCD_LIB})  # 设置输出目录为DIR_BIN(注意:CMake默认使用build目录,但可以通过设置CMAKE_ARCHIVE_OUTPUT_DIRECTORY等变量来改变)  
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${DIR_BIN})  
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${DIR_BIN})  
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${DIR_BIN})  

3.若cpp文件中include 其他头文件,但其他头文件对应源程序为c程序实现的,则使用extern "C"告诉编译器这些函数签名用c语言的函数签名。否则cpp不能识别其函数

在这里插入图片描述

http://www.yayakq.cn/news/700634/

相关文章:

  • 手机自己做网站优化大师手机版
  • 设计类公司网站大前端
  • 做文案需要用到的网站wordpress主题超2m
  • 北京顺义去哪找做网站的广西建设网培训中心
  • 银川做网站的 公司有哪些专做水果店加盟的网站
  • 网站建设创新互联上海网站建设团队杨浦
  • 0基础做网站工具腾讯云市场 wordpress
  • 网站如何做免费推广汉口网站建设制作
  • 重庆建设集团网站网站自动屏蔽恶意点击
  • 网上房地产网站app推广平台接单渠道
  • php智能建站系统成都软件开发工资一般多少钱
  • 部队网站怎么做潍坊网络推广
  • 跨境电商网站建设镇江发布微信公众号
  • 中式设计网站推荐无锡做智能网站
  • 用源码做网站步骤wordpress文章怎么增加字段
  • 怎么在网站后台挂马前端开发培训机构哪家好
  • 个人网站官网淮南家政网站建设地址
  • 企业网站通常包含的栏目商业网站自主设计
  • 企业网站维护怎么做制作一个网站需要多久
  • 软件学校网站模板网站推广的工具
  • 官方网站优化价格国外html5游戏网站
  • 梅州站扩建服务器买好了怎么搭建自己的网站
  • 卡盟网站建设做app一般多少钱
  • 网站答辩ppt怎么做东莞seo按天计费
  • 梁山网站建设哪家好男男床做第一次视频网站
  • 家电维修网站建设中国建设银行网站企业
  • 网站开发 思维导图什么是网站架构
  • 阿里云nas做网站地方网站怎么做
  • 天津滨海新区网站建设注册公司流程 上海
  • 简约网站版式个人网站设计源码