Buildroot构建自己的app||CMake交叉编译||CMakeLists.txt

本文详细描述了在CMakeLists.txt中配置项目,包括头文件目录、添加依赖项、设置交叉编译选项,以及如何将hmi_infoapp集成到Buildroot的步骤,重点在于在ARM环境下进行文件系统编译和链接零MQ、libmodbus等库。
摘要由CSDN通过智能技术生成

目录

一.详细步骤

1.我的存放目录为

2.CMakeLists.txt内容为:

3.app的构建package存放的位置及内容如下:

4.hm_info.mk

5.Config.in

6.在构建package目录下总的Config.in中添加内容如下:

 7.编译文件系统

8.file hmodbus 可以看到是在arm运行环境下

二.参考文献



一.详细步骤

1.我的存放目录为

-inc主要存放.c对应的头文件,我的主要程序在hmodbus.c  common.c

2.CMakeLists.txt内容为:

cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
# Set project information

add_definitions(-DZMQ_STATIC)
project(hmi_info VERSION 1.0.4 LANGUAGES C CXX)
set(CMAKE_C_COMPILER_FORCED TRUE)
set(CMAKE_CXX_COMPILER_FORCED TRUE)

include_directories(${PROJECT_SOURCE_DIR}/inc)

aux_source_directory(${PROJECT_SOURCE_DIR}/src DIR_SRCS)
#link_directories(${PROJECT_SOURCE_DIR}/lib)
message(DEBUG ${DIR_SRCS})

SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) 

add_executable(hmodbus ${DIR_SRCS})

#target_link_libraries(hmodbus libcjson)
#target_link_libraries(hmodbus libmodbus)
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
#指定引用的外部库的搜索路径  lib下的.so目录这样放进去

# message(DEBUG ${PROJECT_SOURCE_DIR})


# 添加链接 libcjson 库
#target_link_libraries (qmodbus -libcjson)
#target_link_libraries(qmodbus -libmodbus)

#设置bin文件的输出路径
#SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

target_link_libraries (hmodbus hv)
target_link_libraries (hmodbus zmq)

#target_link_libraries (hmodbus ${PROJECT_SOURCE_DIR}/lib)
#target_link_libraries (hmodbus zmq.so)
#target_link_libraries (hmodbus libhv.so)
target_link_libraries(hmodbus pthread)
install(TARGETS hmodbus DESTINATION  bin)

#设置交叉编译链
#set(CMAKE_SYSTEM_NAME Linux)
#SET(CMAKE_C_COMPILER /opt/zlg/m3568-sdk-v1.0.0-ga/gcc-buildroot-9.3.0-2020.03-x86_64_aarch64-rockchip-linux-gnu/bin/aarch64-linux-gcc.br_real)
#SET(CMAKE_CXX_COMPILER /opt/zlg/m3568-sdk-v1.0.0-ga/gcc-buildroot-9.3.0-2020.03-x86_64_aarch64-rockchip-linux-gnu/bin/aarch64-linux-g++.br_real)
#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pthread")
#SET(CMAKE_C_COMPILER aarch64-linux-gcc)
#SET(CMAKE_CXX_COMPILER aarch64-linux-g++)

3.app的构建package存放的位置及内容如下:

4.hm_info.mk

################################################################################
#
# hmi_info
#
################################################################################

HMI_INFO_VERSION = 1.0.4
HMI_INFO_SITE = $(TOPDIR)/../app/hmi_info
HMI_INFO_SITE_METHOD = local

HMI_INFO_INSTALL_STAGING = YES

AMODBUS_DEPENDENCIES += zeromq libmodbus libcjson 

# 增加你想要的一些lib的路径 我还得添加modbus,cjson,zeromq  ---- $(TARGET_DIR)/usr/lib    $(TARGET_DIR)/usr/include libzmq
#AMODBUS_CFLAGS += -I$(STAGING_DIR)/usr/include  #根目录下.c文件
#AMODBUS_LDFLAGS += -L$(STAGING_DIR)/usr/lib  #根目录下.so
#AMODBUS_LDADD += -lzmq -lmodbus -lcjson  #这个东西放在哪里才能确定链接器能够找到它们 

$(eval $(cmake-package))   #放在cmake-package里面还是其它位置里有讲究

#define AMODBUS_BUILD_CMDS
#    $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(AMODBUS_MAKE_OPTS)
#endef

#define AMODBUS_INSTALL_TARGET_CMDS
#    $(INSTALL) -D -m 755 $(@D)/amodbus $(TARGET_DIR)/usr/bin/amodbus
#endef
 

5.Config.in

config BR2_PACKAGE_HMI_INFO
    bool "hmi_info"
    select BR2_PACKAGE_ZEROMQ
    select BR2_PACKAGE_LIBMODBUS
    select BR2_PACKAGE_CJSON 
    default y
    help 
        hmi_info
 

6.在构建package目录下总的Config.in中添加内容如下:

内容详细如下:

menu "Daniel private app package"
    source "package/helloworld/Config.in"
endmenu

menu "Compile Modbus RTU"
    source "package/hmi_info/Config.in"
endmenu

编译根文件系统。/build.sh rootfs,在以下目录下生成的交叉编译的可执行文件

 7.编译文件系统

运行脚本,输入1

8.file hmodbus 可以看到是在arm运行环境下

二.参考文献

1.CMake使用笔记 配合libmodbus 分别编译出x86的服务器版本和arm的嵌入式linux版本

2.如何添加APP到Buildroot里(以瑞芯微rv1126为例)

3.M3568 工控核心板交叉编译工具链

  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值