cmake在编译库文件、应用程序中的相关指令解读
cmake在编译库文件、应用程序中的相关指令解读一、前言我们在写应用程序的过程中,经常需要面对一个开发场景:编写跨平台的应用程序。这种要求对于 Linux 系列的平台来说,还是比较
一、前言
我们在写应用程序的过程中,经常需要面对一个开发场景:编写跨平台的应用程序。
这种要求对于 Linux 系列的平台来说,还是比较好处理的,大部分情况下只需要换一个交叉编译工具链即可,涉及到硬件平台相关部分再嵌入几个内联汇编。
但是,对于 Windows 平台来说,就稍微麻烦一些。你可能会说,在 Windows 平台上用 cygwin, minGW 也可以统一编译啊,但是你能指望客户在安装你的程序时,还需要去部署兼容 Linux 的环境吗?最好的解决方式,还是使用微软自家的开发环境,比如VS等等。
之前,我曾经在 B 站上传一个类似的小视频,用 C++ 来写一个跨平台的应用程序结构。后来有小伙伴希望提供一个 C 语言版本的,于是有了这篇文章。
这篇文章,我们就以一个最简单的程序,来描述如何使用 cmake 这个构建工具,来组织一个跨平台的应用程序框架。
阅读这篇文章,您可以收获下面几个知识点:
cmake 在编译库文件、应用程序中的相关指令;
Windows 系统中的动态库导出、导入写法;
如何利用宏定义来进行跨平台编程;
二、示例代码说明
1. 功能描述
示例代码的主要目的,是用来描述如何组织一个跨平台的应用程序结构。它的功能比较简单,如下图所示:
2. 文件结构
Common:放置一些开源的第三方库,例如:网络处理,json 格式解析等等;
Application: 应用程序,使用 Utils生成的库;
Uitls:放置一些工具、助手函数,例如:文件处理、字符串处理、平台相关的助手函数等等,最后会编译得到库文件(动态库 libUtils.so、静态库 libUtils.a);
如果扩展其他模块,可以按照 Utils 的文件结构复制一个即可。
3. cmake 构建步骤
在示例代码根目录下,有一个“总领” CMakeLists.txt 文件,主要用来设置编译器、编译选项,然后去 include 其他文件夹中的 CMakeLists.txt 文件,如下:
4. Utils 目录说明
这个目录的编译输出是库文件:
Linux 系统:libUtils.so, libUtils.a;
Windows 系统:libUtils.dll, libUtils.lib, libUtils.a;
其中的 CMakeLists.txt 文件内容如下:
目前,代码中只写了一个最简单的函数 getSystemTimestamp(),在可执行应用程序中,将会调用这个函数。
首页 下一页 上一页 尾页-
追踪孟晚舟案:与汇丰就公开引渡案相关文件事项达成协议2021-04-13
-
头文件+宏,完美解决声明函数问题!2021-03-30
-
如何在Linux内核中操作某个文件?2021-03-09
-
PG如何通过元命令获取表文件大小?2021-03-05
-
追踪 | 孟晚舟案跟进:英国法院拒绝了其要求汇丰公开相关文件的申请,并要求支付8万英镑诉讼费2021-02-20
-
2021年第1批推荐目录专用车:比亚迪电池/电机均进前2名2021-02-03
-
免疫细胞组分:immunedeconv包与Xcell批量处理文件2021-01-30
-
第四批国采文件解读发布,2月3日报价见!2021-01-28
-
国家药监局:3D打印部分医疗产品列入免于临床试验医疗器械目录2021-01-20
-
新版《鼓励外商投资产业目录》出炉,发展机器人再次成亮点2020-12-29
-
三生国健的赛普汀及本公司的特比澳获列入2020年国家医保目录2020-12-29
-
前沿生物抗HIV药物艾博韦泰纳入国家医保目录2020-12-29
-
君实生物特瑞普利单抗注射液新纳入医保目录2020-12-29
-
治疗新冠肺炎药品列入国家医保目录 支持新冠疫情防控2020-12-28
-
多款国产抗癌药有望进入医保目录,医药板块大涨2020-12-17