基本的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)# 相当于加入一个属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值