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

目录

1 问题提出

2 编写子目录下CMakeList

3 编写主目录下CMakeList

4 验证


1 问题提出

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

                               6af1e5ff5299453194656ad8216a972c.png

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

2 编写子目录下CMakeList

        代码如下

        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文件。

3 编写主目录下CMakeList

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

        代码如下:

        CMakeList:

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

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

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

add_subdirectory(Client MyClient)
add_subdirectory(Server MyServer)

4 验证

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

        0aa217ac4724432998a0cfc09661ed57.png           f8ef631a64e349e082a1f3afd5609d43.png

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

干吃咖啡豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值