CMake交叉编译

综述

CMake是“Cross platform make的缩写,但严格的将CMake并不是编译软件,而是一种编译的应用化,最终调用编译器的还是g++、gcc等编译器;

理解了这一点,完成CMake交叉编译的改造就很简单了

为什么要用cmake,原因很简单,Makefile语法比较繁杂,用cmake可以很方便的实现项目工程管理,会自动帮我们生成makefile文件

逻辑图

实践

交叉编译工具链

交叉编译环境构建-CSDN博客

我的环境编译工具链所在位置:/home/user/crosstool/crosstool-ng/build/arm/toolschain/bin

UBUNTU上安装cmake

sudo apt install apt cmake

准备代码文件

确认代码在x86下编译通过

修改CMakeLists.txt

修改为arm架构工具链:

set(CMAKE_C_COMPILER /home/user/crosstool/crosstool-ng/build/arm/toolschain/bin/arm-unknown-linux-gnueabi-gcc)
set(CMAKE_CXX_COMPILER /home/user/crosstool/crosstool-ng/build/arm/toolschain/bin/arm-unknown-linux-gnueabi-g++

cmake_minimum_required(VERSION 3.5.1)
project(libjson)

set(CMAKE_C_COMPILER /home/user/crosstool/crosstool-ng/build/arm/toolschain/bin/arm-unknown-linux-gnueabi-gcc)
set(CMAKE_CXX_COMPILER /home/user/crosstool/crosstool-ng/build/arm/toolschain/bin/arm-unknown-linux-gnueabi-g++) 
#set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
#set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
#set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
#set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

#set(CMAKE_CXX_FLAG  "--std=c++11")
set(CMAKE_SYSTEM_NAME linux)
set(CMAKE_SYSTEM_PROCESSOR arm)

#启用对汇编的支持
ENABLE_LANGUAGE(ASM)
SET(STARTUP_SRC ${PROJECT_SOURCE_DIR}/Startup/startup_ht32f5xxxx_gcc_01.s)
SET(CMAKE_ASM_FLAGS "${MCU_FLAGS} --defsym USE_HT32_CHIP=4")

#添加源文件
AUX_SOURCE_DIRECTORY(. MAIN_SRCS)

#告诉编译器带上调试符号
SET(CMAKE_CXX_FLAGS "-g --std=c++2a")

SET(LIBHELLO_SRC libjson.cpp)
ADD_LIBRARY(json SHARED ${LIBHELLO_SRC})

CMake交叉编译


我公司承接各类技术服务,主要聚焦于:stm32、单片机、嵌入式、QT应用开发、Web+Python+Django应用开发。欢迎合作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汉森教育

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值