基本的cmake使用(linux,macos)

两种方式 进行cmake

mkdir build
cd build
cmake ..
make 
cmake -S . -B build  -s代表目前在哪个路径下,makefile放到build文件夹下(自动创建)
cmake --build build  到build文件夹中执行build

cmake 一般干啥

一般就两种,要不生成可执行文件,要不生成库文件(动态库,静态库)

动态库和静态库的概念

静态库

静态库编进去二进制的源码,类似于.o,静态链接就是把代码复制进去。一般开源的不允许静态,因为静态链接就看不到引用其他的了。链接时间比较长(每次用的时候,都要相应的代码复制进去),文件较大。

静态库需要头文件

比如叫xlog

windows:xlog.lib 后缀名为lib

windows 静态库还需要区分debug和release版本,debug编进去二进制的源码,release编进去原版的源码

linux,macos:libxlog.a 后缀名为a 前面自动加上lib

动态库

windows 生成 xlog.lib(区分于上面,只是放了函数的索引) xlog.ddl

编译时只是复制过去地址就ok,运行的时候再去找函数

加载动态库,内存只需要加载一个即可,节省了很多空间

linux,android:

libxlog.so

macos:

libxlog.dylib

cmake 基本语法

基础1(生成可执行文件)

# CMakeLists.txt cmake文件名大小写不敏感

#指定cmake最低版本
cmake_minimum_required(VERSION 3.20)

#构建项目的名称
project(first_cmake)

#构建执行程序
add_executable(first_cmake 101first_cmake.cpp)

基础2(生成静态库)

#CMakeLists.txt
cmake_minimum_required(VERSION 3.20)
project(xlog)
add_library(xlog STATIC xlog.cpp xlog.h)

基础3(链接一个静态库)

链接基础二生成的静态库 libxlog.a

#CMakeLists.txt test_xlog 102
cmake_minimum_required(VERSION 3.20)
project(test_xlog)
#指定头文件查找路径 
include_directories("../xlog")

# 指定库查找路径  window自动找 ../xlog/build/Debug  ../xlog/build/Release
link_directories("../xlog/build")

add_executable(test_xlog test_xlog.cpp)

# 指定加载的库
target_link_libraries(test_xlog xlog)# 需要放到可执行文件后面 相当于属性

基础4(生成动态库并链接动态库)

#CMakeLists.txt
cmake_minimum_required(VERSION 3.20)
project(xlog)
add_library(xlog SHARED xlog.cpp xlog.h)
include_directories(./xlog)
link_directories(./xlog/build)
add_executable(test_xlog ./test_xlog/test_xlog.cpp)
target_link_libraries(test_xlog xlog)# 相当于加入一个属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux使用CMake进行交叉编译的步骤如下: 1. 首先,需要编写一个适用于目标平台的工具链文件。这个文件可以指定交叉编译工具的路径、系统名称等信息。例如,可以在工具链文件中设置CMAKE_SYSTEM_NAME为Linux,指定交叉编译工具的路径为TOOLCHAIN_PATH。 2. 在执行CMake命令开始构建时,可以使用参数--toolchain或者-DCMAKE_TOOLCHAIN_FILE=指定工具链文件的路径。这样,CMake就会使用指定的工具链文件进行交叉编译。 举个例子,假设工具链文件的路径为/path/to/toolchain-file.cmake,可以使用以下命令进行交叉编译: cmake ... --toolchain=/path/to/toolchain-file.cmake 或者 cmake ... -DCMAKE_TOOLCHAIN_FILE=/path/to/toolchain-file.cmake 这样,CMake就会根据工具链文件中的设置进行交叉编译,生成适用于目标平台的库文件可执行文件。 引用内容: [1] 交叉编译笔者在工作中经常会遇到。笔者开发使用的宿主机一般都是Linux(Ubuntu),交叉编译的目的基本都是为了将程序代码编译成目标嵌入式平台的库文件,然后再在目标系统上调用集成,一般都是ARM系列的CPU。而对于不同操作系统(Windows、LinuxMacOS)之间的交叉编译,则主要是为了编译示例程序,方便在不同操作系统上进行展示或者调试。 [2] toolchain.cmake set(CMAKE_SYSTEM_NAME Linux) #这里以Linux为例 set(TOOLCHAIN_PATH /home/test/src/func/build) 这里指定toolchain的目录 set(TOOLCHAIN_PATH ${tools}/usr/local/arm/gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc) 这里指定交叉编译工具的路径 set(TOOLCHAIN_PATH ${tools}/usr/local/arm/gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g ) 这里指定交叉编译工具的路径 [3] 在需要进行交叉编译的时候,先编写一个适用于目标平台的工具链文件,然后在执行cmake命令开始构建时,可以使用参数--toolchain或者-DCMAKE_TOOLCHAIN_FILE=指定工具链文件的路径即可: cmake...--toolchain<path/to/toolchain-file> #or cmake...-DCMAKE_TOOLCHAIN_FILE=<path/to/toolchain-file>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值