cmake(五)Cmake构建静态库和动态库

一  基本语法

二  构建动态

目的: 构建一个'库'供'他人'使用

①  新建目录演示

②  添加头文件

1)我们一般在'.h后缀'的'头文件'里面只放入'函数声明'、'宏定义'、'函数原型'

h -->'header'

2)而'具体的实现'在.cpp文件里面

3)在'编译(compile)'的时候,编译器会'自动加载'和'.h'匹配的'.cpp'文件

#ifndef的用法

1)命名规则

核心: '独一无二'的,不要冲突

2)如何编写头文件

3)最终效果

③  头文件的具体实现

'注意': 'hello_lirary'函数重命名为'hello_library'

④  主程序

目的: 调用'动态生成库中定义'的hello_lirary函数

⑤  编辑CMakeLists.txt文件

'注意': add_library()函数中'HelloLirary.cpp'应为'HelloLibrary.cpp' -->少了一个字符'b'

⑥  采用外部编译

 

生成cmake的'工程文件'CMakeLists.txt文件

⑦  修改CmakeLists错误

cmake3 ../CmakeLists  --> make Makefile('编译') -->生成'这里是动态库'和'二进制可执行文件'

collect2: error: ld returned 1 exit status 解决方案

(.text+0x13): undefined reference to

备注: 报错的'原因'--> 'HelloLibrary.cpp'中函数的定义有问题

本来应该是'hello_library()',实际'错误'的定义为'hello_lirary()'

修改HelloLibrary.cpp错误

细节: '动态库'会在前面'自动'加上'lib'的'前缀'

⑨  测试二进制可执行文件

三  构建静态

①  保持环境干净

②  修改CMakeLists.txt文件

目的: 生成'静态'库,而不是'动态'库

kiosk@k8s build $ vim ../CMakeLists.txt

③  修改头文件的实现

备注: 函数的实现'象征性'的修改下

vim ../HelloLibrary.cpp

④  测试

四  静态库动态库区别

静态库和动态库的区别

gcc工具制作静态库和动态库

 

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 CMake 编译动态库静态库,你可以按照以下步骤进行操作: 1. 创建一个 CMakeLists.txt 文件,该文件描述了构建过程和项目配置。 2. 在 CMakeLists.txt 文件中,使用 `add_library` 命令来定义要构建的库。使用 `SHARED` 参数来指定动态库,使用 `STATIC` 参数来指定静态库。例如: ```cmake # 构建动态库 add_library(mylib SHARED src/mylib.cpp) # 构建静态库 add_library(mylib_static STATIC src/mylib.cpp) ``` 3. 如果你有多个源文件,可以将它们一起添加到库中: ```cmake # 构建动态库 add_library(mylib SHARED src/mylib.cpp src/other.cpp) # 构建静态库 add_library(mylib_static STATIC src/mylib.cpp src/other.cpp) ``` 4. 如果你想为库定义公共头文件目录,可以使用 `target_include_directories` 命令。例如: ```cmake target_include_directories(mylib PUBLIC include) ``` 5. 如果你希望链接其他库到你的库中,可以使用 `target_link_libraries` 命令。例如: ```cmake target_link_libraries(mylib PUBLIC otherlib) ``` 6. 最后,在 CMakeLists.txt 文件中添加一个 `install` 命令,以便在构建过程完成后安装库文件到指定的目录。例如: ```cmake install(TARGETS mylib DESTINATION lib) install(FILES include/mylib.h DESTINATION include) ``` 7. 运行 CMake 命令来生成构建系统所需的文件: ```shell cmake . ``` 8. 使用生成的构建系统来编译和构建库: ```shell make ``` 在构建过程完成后,你将在指定的目录(例如 `lib`)中找到生成的动态库静态库文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值