首页 > 其他分享 >利用CMake生成同一解决方案下多个项目管理文件

利用CMake生成同一解决方案下多个项目管理文件

时间:2023-04-25 22:55:19浏览次数:36  
标签:FILES SRC CMake 项目 项目管理 解决方案 HEADER

   有的时候,我们需要在同一解决方案下管理多个项目,如果通过VS将项目一个一个添加,这项工作将变得十分繁琐。举例来讲,拿服务端和客户端的SOCKET通信来说,服务端和客户端两部分代码应作为两个单独的项目进行编译,而为了在同一解决方案下对这两个(或多个)项目进行管理,此时便可以借助CMake来帮助我们高效完成这项任务。

                               

  如上图所示,在ServerAndClient这个项目文件夹中包含了Client和Server两个文件夹,里面存放了欲要生成项目的头文件和cpp,在这两个项目文件夹中,我们需要编写CMakeLists文件。(可以直接新建一个txt文本,然后用编辑器编辑)

  代码如下

  CMakeList.txt :

#生成的子项目名称
project (MyServer) 

#搜索对应的头文件 并存储在 HEADER_FILES变量中
file(GLOB HEADER_FILES ./*.h)
#搜索对应的CPP文件 并存储在 SRC_FILES_FILES变量中
file(GLOB_RECURSE SRC_FILES ./*.cpp)

#将之前找到的文件导入到项目中,指定生成的文件类型 (.exe)
add_executable (${PROJECT_NAME} ${HEADER_FILES} ${SRC_FILES})
project (MyClient)

file(GLOB HEADER_FILES ./*.h)
file(GLOB_RECURSE SRC_FILES ./*.cpp)

add_executable (${PROJECT_NAME} ${HEADER_FILES} ${SRC_FILES})

  以上是保存在欲要生成项目的根目录下的CMakeList文件。

  完成上述工作后,需要回到解决方案目录,即ServerAndClient文件夹下,对解决方案结构进行设计。

  代码如下:

  CMakeList:

#对CMake版本进行限制
cmake_minimum_required(VERSION 3.15)

#设置解决方案名称
project(MyClientAndServer)

#添加子目录 - 即MyClient和MyServer两个项目录
# - 参数1 是用来指定需要索引的源文件目录 
# - 参数2 用来指定项目的名称

add_subdirectory(Client MyClient)
add_subdirectory(Server MyServer)

  大功告成,在这里我们便完成了对同一解决方案下的多项目结构设置,后面只需要用CMake来一键生成.sln文件~

        ​        

标签:FILES,SRC,CMake,项目,项目管理,解决方案,HEADER
From: https://www.cnblogs.com/MaxTsang/p/17354240.html

相关文章

  • 虚拟机|--Hyper-V|--Start PXE over IPv4.报错解决方案
    前言在Hyper-V管理器中>>操作>>"快速创建"了一个WIndowsXP系统的虚拟机,结果启动的时候报错了解决方案在创建虚拟机的时候不要快速创建,而使用新建,在指定代数步骤选择第一代(1),开始创建的步骤改一下就可以了.其他配置推荐在分配内存步骤我写的是8000M左右,(根......
  • Microsoft Azure 解决方案: 了解和合理规划数据存储
    51CTO博客地址: https://blog.51cto.com/14669127Azure培训视频地址: https://space.bilibili.com/2000820534Gartner研究副总裁MichaelWarrilow表示:“由于新冠疫情的爆发,企业机构为了应对新的业务和社会变化才在过去两年开始加快云迁移速度。未能跟上云迁移速度的技术和服务提供......
  • vue-element-admin报错Error: error:0308010C:digital envelope routines::unsupporte
    安装vue-element-admin报错 nodejs  Node.jsv18.15.0  opensslErrorStack:['error:03000086:digitalenveloperoutines::initializationerror'],library:'digitalenveloperoutines',reason:'unsupported',code:'ERR_OSSL......
  • 智能燃气物联网数据采集解决方案
    工业物联网技术应用于燃气管理可以实现自动化数据采集和远程监控报警,为企业提供查询燃气消耗量的可靠手段,实现燃气能耗智能管理,提升管理效率,有助于节能减排工作开展。通过将燃气表接入到物通博联工业智能网关,实现能耗数据的共享,将实时计量数据上报到监控中心(本地上位机或云平台),实现......
  • 广州政务IP失效问题分析与解决方案
    背景虚拟机网卡设置了dhcp模式,经常会出现IP地址丢失的问题,有如下原因:Decline概述DHCP客户端收到DHCP服务器ACK应答报文后,通过地址冲突检测发现服务器分配的地址冲突或者由于其他原因导致不能使用,则会向DHCP服务器发送Decline请求报文,通知服务器所分配的IP地址不可用,以期获......
  • 20230425001 - DataGridView绑定了数据之后, 再添加CheckBox列的解决方案
                 DataGridViewCheckBoxColumncheckBoxColumn=newDataGridViewCheckBoxColumn();           checkBoxColumn.Name="select";           checkBoxColumn.HeaderText="选择";           dgv_M.Columns.Inse......
  • K8s 集群 etcd节点故障解决方案
    1环境说明k8s版本:v1.20etcd节点(192.168.0.12)故障: 报错详情: 4月2422:47:13k8s-node2etcd[9543]:{"level":"warn","ts":"2023-04-24T22:47:13.571+0800","caller":"etcdserver/server.go:2065","msg":......
  • 华为云D-Plan解决方案助力汽车零部件质检智能化
    传统行业正面临巨大的变革,数字化转型已成为关键词。随着工业4.0的到来,制造业的生产方式、供应链等都将发生重大变化。每一家企业都必须通过数字化转型来应对这一挑战,否则就将被淘汰。在全球化大背景下,中国制造业面临着新一轮的竞争与合作,如何抓住这次发展机会?实际就是要形成"中国制......
  • vue 项目依赖安装失败解决方案
    今天电脑新装了个node.js以及VSCode,找了一个之前的vue项目在上面运行了一下。使用npminstall有一部分依赖一直安装不上,输入npmrunserver一直提示 vue-cli报错,试了下面的方式还是不行。 一、使用淘宝镜像安装依赖:1.安装cnpm   npminstall-gcnpm--registry......
  • 第五讲 Weldentity分布式身份解决方案、智能合约初探
    什么是智能合约1996年,NickSzabo在文章《SmartContracts:BuildingBlocksForDigitalMarkets》中提出了智能合约的概念所谓“合约”,就是条文、合同一类的东西,里面记录了发生的条件与对应执行的条款,以支持确权等操作;所谓”智能”,就意味着自动化、可编程。所以,智能合约就是......