千家信息网

C++中如何使用Cmake来搭建跨平台的应用程序框架

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了C++中如何使用Cmake来搭建跨平台的应用程序框架,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。示例代码说明1.
千家信息网最后更新 2026年11月03日C++中如何使用Cmake来搭建跨平台的应用程序框架

这篇文章主要介绍了C++中如何使用Cmake来搭建跨平台的应用程序框架,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

示例代码说明

1. 功能描述

示例代码的主要目的,是用来描述如何组织一个跨平台的应用程序结构。它的功能比较简单,如下图所示:

2. 文件结构

  • libA: 编译得到库文件 libA.so/libA.a;

  • libB: 编译得到库文件 libB.so/libB.a,它需要调用 libA 库中的函数;

  • appC:应用程序,它需要调用 libB 库中的函数;

三、Linux 系统下操作

1. 通过 cmake 指令,生成 Makefile 文件

为了不污染源代码,我们新建一个 build 目录,然后在其中编译:

$ make build $ cd build $ cmake ..

编译输出结果:

2. 编译 libA

$ cd libA/src $ make

编译结果如下:

安装到源码下的 output 目录:

$ make install

此时,相关文件被安装到源码路径下 libA 的 output 目录下:

3. 编译 libB

由于 libB 调用了 libA 中的函数,因此需要手动把相关头文件和库文件复制到 libB 目录下,当然,这个步骤也可以写在 CMakeLists.txt 中。

然后进入 build/libB/src 目录,执行编译指令:

$ cd build/libB/src $ make

同样的,把 libB 生成的库文件和头文件,复制到源码中的 libB/output 目录下:

4. 编译可执行程序 appC

由于 appC 调用了 libB 中的函数,因此需要手动把相关头文件和库文件复制到 appC 目录下的 include 和 lib/linux 目录下。

此外,由于我一直使用动态库,所以还需要把 libA 的头文件和库文件也复制到 appC 目录下。

然后进入 build/appC/src 目录,执行编译指令:

$ cd build/appC/src $ make

执行输出结果:

四、Windows 系统下操作

1. 生成 VS 解决方案

在 build 目录下执行 cmake ..,得到 VS 解决方案:

打开工程文件 CppFrame.sln,右侧的解决方案如图:

2. 编译 libA

在 libA_shared 上单击右键,选择【生成】:

可以看到,在 build\libA\src\Debug 目录下看到编译生成的文件:

这里有一个问题需要注意一下:在 libA/src/CMakeLists.txt 中,如果编译动态库,请如下设置:

如果编译静态库,请如下设置:

这几个宏定义,需要结合 ADll.h 中的定义来理解,主要是解决 Windows 平台下的动态库的导出与导入问题。

在下面编译 libB 库的时候,也需要同样的操作。

3. 编译 libB

由于 libB 调用了 libA 中的函数,因此,需要手动把 libA 库相关的头文件和库文件复制到 libB 目录下。

在 libB_shared 目标上,单击【生成】,编译输出如下:

此时,在 build/libB/src/Debug 目录下,看到生成的库文件:

我们把 libB 库文件和头文件,手动复制到 appC 目录下备用。

4. 编译 appC

在 VS 的 main 目标上,单击【生成】,编译输出如下:

此时,在 build\appC\src\Debug 目录下即可看到可执行程序 main.exe。

为了执行这个程序,还需要把 libA.dll, libB.dll 复制到当前目录下才可以,如下所示:

感谢你能够认真阅读完这篇文章,希望小编分享的"C++中如何使用Cmake来搭建跨平台的应用程序框架"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

编译 目录 文件 库文件 生成 程序 函数 应用程序 应用 手动 篇文章 输出 动态 指令 方案 源码 结果 解决方案 框架 C++ 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 互联网新科技 深圳市人人互联网科技有限公司 上海睿民互联网科技有限公司 新华互联网科技 重庆互联网络科技 互联网科技集团 西安互联网科技 互联网未来科技 易通互联网络科技有限公司 互联网时代科技改变生活 宁夏科技产业互联网案例 崇明区互联网教育科技诚信经营 崇明区互联网教育科技售后服务 宜昌元轩互联网科技有限公司 城市宝互联网科技有限公司 广州百诚互联网科技有限公司官网 吉林省码上互联网科技电话 保山浩联互联网科技有限公司 中国主要互联网科技公司 广州紫鲸互联网科技有限公司 华中科技大学互联网 互联网科技博主是什么意思 科技互联网的估值 智腾互联网科技有限公司 搜狐科技互联网 民营互联网公司国防科技 城市宝互联网科技有限公司 互联网高科技行业有哪些企业 互联网科技企业商标注意事项
0