分享一个适合【团队】开发的cmake【跨平台】工程模板

网站建设4年前发布
55 0 0
20230306131324286e1617458515b8b67044f749cdabc519838d715,之前分享过一篇关于 cmake 的入门文章:​​《使用 cmake 来搭建跨平台的应用程序框架:C语言版本》​​,那篇文章重点是描述如何利用 cmake 来编译或者构建跨平台的工程,并没有涉及到团队协作开发方面的内容。,这篇文章提供了一个简洁易懂的 cmake 工程模板,可以满足一个小团队的合作开发,无论是在代码安全性,还是开发效率上,都能满足基本的开发需求。,本文详细描述了文件结构和操作流程,如何在Linux系统使用命令行来编译,如何在Windows系统中使用VSCode 和Visual Studio 2019来进行开发和编译。,使用这个cmake模板之后,代码的结构非常的清晰,编译过程中产生的中间文件也不会污染源代码。,无论是开发一些个人项目,或者是在一些小团队中使用是绰绰有余了。,示例代码中核心的两个文件就是:app.cmake和lib.cmake,几乎每一行都有注释。,在团队开发工作中,每个人负责不同的模块。,从代码保密的角度看,除了项目负责人(或者说项目整合人员)有权限获取一个项目中的所有代码之外,每个开发者通常只拥有自己负责的模块。,每个开发者在编译自己的模块时,需要把输出文件(头文件、库文件、文档)等,汇总到一个中央仓库中,方便整合人员进行集成编译。,因此,示例代码如下图所示:,2023030613132557ecacc33f8dd0d0ac0391c5accbddbb1750a0948,再来看一下mymath内部的文件组织结构:,20230306131326933378730143c801a0a1244763dc2633e0b4ac441,myapp目录内部结构与mymath几乎是一样的,这里就不赘述了。,这两个模块的编译结果会自动输出到install目录,如下图所示:,20230306131327b4d5fdb65f5d45d4a852233f9f23c5e0fe58e0950,在install目录内:,删除install下所有文件和目录,得到一个干净的目录。,创建build目录,存放中间文件:,编译:,成功编译后,在install目录里可以看到编译的输出结果:,查看install目录下的输出结果:,执行结果如下图:,2023030613132744b70fb181d29b060661648f8c13cbf9f2402f873,在VSCode IDE中,通过菜单【File】-【Open Folder】,打开文件夹demo_cmake。,因为demo_cmake目录下存在一个顶层CMakeLists.txt文件,所以VSCode侦测到之后会自动进行cmake配置,同时会创建目录build来存放所有的中间文件。,有些VSCode版本会跳出一个提示窗,让用户选择进行cmake配置,如下一步中所示。,可以同时按下:【ctrl】 + 【shift】 + 【p】,重新进行cmake配置:,20230306131457383ddcb7299d18a9e5b894c1e69cf6fa30e346186,同时按下【shift】+【F7】,(或者按下VSCode最下方 【Build】右侧的编译目标),弹出窗口:,202303061313281541044924517567928322d95ec705f9c06bea933,查看install目录中的输出文件:,同时按下【shift】+【F7】,选择编译myapp。,查看install目录:,2023030613145866f2f6710018fceb9e41652d45fd3290fdc8fc979,打开命令行窗口: x64 Native Tools Command Prompt for VS 2019。,输出如图:,20230306131329c9a28ec58fd039f68c59723527e32809b96adf978,此时,可以看到解决方案:demo_cmake\build\demo_cmake.sln。,使用VS2019打开解决方案文件:,20230306131329d844dc1178493626be48876de0a1b2dd2ef6ff827,在工程mymath上单击右键,选择【重新生成】,在输出信息区可以看到生成了文件:,在工程myapp上单击右键,选择【重新生成】。,在输出信息区可以看到生成了文件:,2023030613133039186220105ed09367722142d3e009c537a9b0411,我们知道,在Windows平台上,VS2019只是一个IDE而已,它的底层是调用MSBuild来执行编译动作的。,MSBuild的角色与cmake非常类似,使用起来也比较方便,以后再总结一篇关于MSBuild的模板工程。,本文转载自微信公众号「IOT物联网小镇」,可以通过以下二维码关注。转载本文请联系IOT物联网小镇公众号。,20230306131331f9af66545ed41f303a45542d521abbd65ed416452
© 版权声明

相关文章