学习现代CMake

背景

最近在B站刷到彭老师的视频发现其中教cmake内容,看完发现cmake其实超级好用,之前一直使用IDE集成环境,虽然也可以完成代码开发,但是修改依赖什么的确实非常让人头痛,尤其是VS修改依赖,比如从debug把依赖修改成release就超级反人类,需要把debug的环境一个项目一个项目的复制到release里面。虽然是通过GUI形式的,但是修改十几个二十几个依赖也是非常变态的。上周维护一个软件版本,光修改依赖就弄了一上午,下午已经累瘫了。处于被动摸鱼。视频放下面了,这位up主的所有视频都值得认真学习。干货超级多。

【录播】现代C++中的高性能并行编程与优化(持续更新中)_哔哩哔哩_bilibili

现代 CMake 模块化项目管理

我是按照上面up主的推荐构建的项目模块,这个模块化我觉得比我之前使用的要科学一代点,我之前使用的没有命名空间,没有使用include目录下再添加项目名称这样的头文件格式,因为是使用VS开发的,所以一直是VS开发方式。

这就是彭老师推荐的目录组织方式:

 下面就按照这个组织方式,我仿造一个。

这个就是我的demo

test是项目目录,下面有两个子模块,一个hello,一个mybody,main.cpp是主函数入口函数。 

 

下面是全局cmake文件,

cmake_minimum_required(VERSION 3.12) # 解释最低使用那个版本的cmake


set(CMAKE_CXX_STANDARD 20)    #设置 C++ 用那个版本
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS ON)
project(execTest LANGUAGES CXX)    # 设置使用C++
set(CMAKE_BUILD_TYPE Debug)        # 设置使用编译debug

file(GLOB sources CONFIGURE_DEPENDS *.cpp)    # 设置当前目录的变量
add_executable(execTest ${sources})    # 生成exe
target_link_libraries(execTest PUBLIC hello)    # 添加依赖模块 PUBLIC是可见的也可以添加私有的 PRIVATE
target_link_libraries(execTest PUBLIC mybody)
add_subdirectory(hello)    # 添加模块
add_subdirectory(mybody)

 模块cmake

file(GLOB_RECURSE sources CONFIGURE_DEPENDS *.cpp *.h)

add_library(hello SHARED ${sources})    # 生成动态库 想生产静态库改成STATIC

target_link_libraries(hello PUBLIC mybody)    # 连接mybody 
target_include_directories(hello PUBLIC include)    # 添加头文件

file(GLOB_RECURSE sources CONFIGURE_DEPENDS *.cpp *.h)

add_library(mybody SHARED ${sources})


target_include_directories(mybody PUBLIC include)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

波雅_汉库克

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

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

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

打赏作者

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

抵扣说明:

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

余额充值