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应用开发。欢迎合作。

相关推荐

  1. 交叉编译

    2024-02-23 07:18:02       17 阅读
  2. cmake编译数据库

    2024-02-23 07:18:02       40 阅读
  3. centos 编译安装 cmake

    2024-02-23 07:18:02       47 阅读
  4. CMake编译选项CMAKE_CXX_FLAGS详解

    2024-02-23 07:18:02       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-23 07:18:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-23 07:18:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-23 07:18:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-23 07:18:02       20 阅读

热门阅读

  1. websocket 实现原理和技术方案

    2024-02-23 07:18:02       35 阅读
  2. 如何为PostgreSQL设置自增主键?

    2024-02-23 07:18:02       25 阅读
  3. mysql 迁移-data目录拷贝方式

    2024-02-23 07:18:02       31 阅读
  4. Hexo + Github Action部署博客

    2024-02-23 07:18:02       32 阅读
  5. [ARC001B] リモコン

    2024-02-23 07:18:02       30 阅读
  6. 设计模式-工厂方法模式

    2024-02-23 07:18:02       25 阅读
  7. 一次学习引发我对于 synchronized 的再理解

    2024-02-23 07:18:02       26 阅读