一、前言

咱们在写运用程序的进程中,常常需求面临一个开发场景:编写跨途径的运用程序。

这种要求关于 Linux 系列的途径来说,仍是比较好处理的,大部分情况下只需求换一个交叉编译东西链即可,涉及到硬linux重启指令件途径相关部分再嵌入几个内联汇编。

但是,关于 Windows 途径来说,就略微费事一些。你或许会说,在 Windows 途径上json用 cygwin, minGW 也能够一致编译啊,但是你能期望客户在设备你的程序时,还需求去安顿兼开源节流容 Linux 的环境吗?最好的解决办法,仍是运用微软自家的开发环jsonp境,比如VS等等。

这篇文章,咱们以公积金借款一个最简略枸杞的程序,来描绘怎样运用 cmake 这个构建东西,来安排一个龚俊跨途径的运用程序结构Go

阅读这篇文章,json是什么意思您能够收成下面几个常识点:

  1. cmake 在编译库文件、运用程序中的相关指令;

  2. Windows 体系中的动态库导出、导入写法;

  3. 怎样运用宏界说来进行跨途径编程;

在大众号后台留言【430】,能够收到示例代码。在 Linulinux指令x/Windows 体系中能够直接编译、实施,拿来即用。

二、示例代码说linux检查删去文件记录

1linux是什么操作体系. 功用描绘

示例代码的首开源矿工要目的,是用来描绘怎样安排一个跨途径的运用程序结构。它的功用比较简略,如jsonobject下图所示:

运用 cmake 来建立跨渠道的应用程序结构:C言语版别

2. 文件结构

运用 cmake 来建立跨渠道的应用程序结构:C言语版别

  1. Common:放json文件是干什么的置一些开源的第三方库,例如:网络处理,json 格局解析等等;

  2. Application: 运用程序,运用 Utils生成的库;

  3. Uitls:放置一些东西、帮手函数,例如:文件处理、字符串处理、途径相关的帮手函数等等,终究会编译得到库文件(动态json库 libUlinux检查删去文件记录tils.so、静态库 libUtils.a);

  4. 假定扩展其他模块,能够按照 Utils 的文件结构仿制一个即可。

3. cmlinux体系ake 构建进程

在示例代码根目录google下,有一个“总领” CMakeLists.txt 文件,首要用来设置编译器、编译选项,然后去 incjson格局lude 其他文件夹中的 CMakeLists.txt 文件,如下:

运用 cmake 来建立跨渠道的应用程序结构:C言语版别

4. Utils 目录阐明

这个目录的编译输出是库文件:

Linux 系宫颈癌前期症状统:libUtils.so, libUtils.a;

Windows 体系:libUtils.dll, libUtils.ljson字符串ib, libUtils.a;

其间的 CMakeLists.txt 文件内容如下:

运用 cmake 来建立跨渠道的应用程序结构:C言语版别

现在,代码中只写了一个最简略的函数 getSystemTimestamp(),在可实施运用程序中,将会调用这个函数。

5. Applicationlinux 目录阐明

这个目录的编译输出是:一个可实施程序,其间调枸杞用了 libUtils 库中的函开源代码网站github数。

CMakeLists.txtjsonp 文件内容如下:

运用 cmake 来建立跨渠道的应用程序结构:C言语版别

三、Linux 体系下操作进程

1. 创立构建目录 build

$ mkdir build

在一个独立的 build 目录中编译,生成的中间代码不会污染源代码,这样关于运用 git 等版甭管控东西来说非常的便当,在提交的时分只需求 ignore build 目录即可,强烈引荐按照这样的办法来处开源矿工理。

2. 实施 cmake,生成 Makefile

$ cd build
$ cmake ..

运用 cmake 来建立跨渠道的应用程序结构:C言语版别

3. 编译 Utils 库

$ cd Utils/src
$ make

运用 cmake 来建立跨渠道的应用程序结构:C言语版别

在 C宫崎骏MakeLists.txt 中的终究部分是设备指令,把产生的库文件和头文件,设备到源码中的 install 目录下。

$ make install

运用 cmake 来建立跨渠道的应用程序结构:C言语版别

4. 编译可实施程序 Application

Application 运用到了 libUtils.so 库,因linux操作体系基础常识而需求手动把 libUtils.so 和头文件,仿制到 Application 下面临应的 lib/linux 和 include 目录下。

当然,也能够把这个操作写在 Utils 的设备指令里。

$ cd build/Application/src
$ make

运用 cmake 来建立跨渠道的应用程序结构:C言语版别

实施生成的可实施程序 main,即可看到输出成果。

四、Widnows 体系下操作进程

1. 通过 cmake 指令生成 VS 工程

相同的道理,新建一个 build 目录,然后在其间实施 cmake .. 指令,生成 Vlinux重启指令S 解决方案,我运用的是 VS2019:

运用 cmake 来建立跨渠道的应用程序结构:C言语版别

运用 cmake 来建立跨渠道的应用程序结构:C言语版别

2. 编译 Utils 库文件

运用 VS2019 打开工程文件 DemoAp架构师p.sln,在右侧的解决方案中,能够看到:

运用 cmake 来建立跨渠道的应用程序结构:C言语版别

在 libUtils_shared 单击右键,选择【生linux成】:

运用 cmake 来建立跨渠道的应用程序结构:C言语版别

此刻,在目录 buildUtilssrcDebug 下面,能够看到生成的文件:

运用 cmake 来建立跨渠道的应用程序结构:C言语版别

3. 编译可实施程序 Application

因为Application需求运用 Utils 生成的库,因而,需求json解析手动把库和头文件仿制到 Application 下面的 lib/win32 和 include 目录下。

在 VS 解决方案窗口中,在 main 目标上,单击右键,选择【生成】:

运用 cmake 来建立跨渠道的应用程序结构:C言语版别

此刻,在目录 buildApplicationsrcDebug 下能够看到生成的可实施程序:

运用 cmake 来建立跨渠道的应用程序结构:C言语版别

直接单击 main.exe 实施,报错:

运用 cmake 来建立跨渠道的应用程序结构:C言语版别

需求把 libUtils.dllinux操作体系基础常识l 动态库文件仿制到 main.exe 地址的目录下,然后再实施,即可成功。

运用 cmake 来建立跨渠道的应用程序结构:C言语版别

五、总结

这篇文章的操作进程首要以动态库为主,假定编译、运用静态库,实施进程是相同相同的。

假定操作进程有什么问题,欢迎留言、谈论,谢谢!

在大众号后台留言【430】,能够收到示例代码。在 Linux/Windows 体系中能够直接编译、实施,拿来即用。

祝您好运!

———- End ———-

让常识活动起来,越共享,越走运!

星标大众号,能更快找到我!

Hi~你好,我是道哥,一枚嵌入式开发老公积金借款兵。

引荐阅读

1. C言语指针-从底层原理到花式技巧,用图宫崎骏文和代码帮你解说透彻
2. 本来gdb的底层调试原理这么简略
3. 一步步剖析-怎样用C结束面向对象编程
4. 图文剖析:怎样运用LinuxGoogle的pro狗狗币tobuf,来考虑、设计、结束自己的RPC结构
5. 都说软件架构要分层、分模块,详细应该怎样做(一)
6. 都说软件架构要分层、分模块,Linux详细应该怎样做(二json解析)