初识Cmake

环境:Cmake,VScode,VScode的Cmake Tools插件
目录结构:

├── CMakeLists.txt
├── build
├── a
│   ├── CMakeLists.txt
│   ├── a.c
│   └── a.h
│	 ├── a1
│	 │   ├── CMakeLists.txt
│	 │   ├── a1.c
│	 │   └── a1.h
├── b
│   ├── CMakeLists.txt
│   ├── b.c
│   └── b.h
│	 ├── b1
│	 │   ├── CMakeLists.txt
│	 │   ├── b1.c
│	 │   └── b1.h
└── main.c
  • 使用include makelist方法:
#顶层Cmakelist:
include(${CMAKE_CURRENT_LIST_DIR}/a/CMakeLists.txt) 
include(${CMAKE_CURRENT_LIST_DIR}/a/a1/CMakeLists.txt)
include(${CMAKE_CURRENT_LIST_DIR}/b/CMakeLists.txt) 
include(${CMAKE_CURRENT_LIST_DIR}/b/b1/CMakeLists.txt)
aux_source_directory(. ALL_SRCS)
add_executable(hello_simple ${ALL_SRCS})#指定生成目标、源文件
message("end = ${ALL_SRCS}") #打印./main.c 和其他源文件的绝对路径

#a/Cmakelist:(其他目录的Cmakelist都相同)
include_directories(${CMAKE_CURRENT_LIST_DIR})    # 增加头文件搜索路径
aux_source_directory(${CMAKE_CURRENT_LIST_DIR} ALL_SRCS)

缺点:当目录结构发生变化时,需要修改顶层Cmakelist

  • 方法2:传递全局变量
#顶层Cmakelist:
aux_source_directory(. ALL_SRCS)

set_property(GLOBAL PROPERTY INCLUDE_DIR ${PROJECT_SOURCE_DIR})
set_property(GLOBAL PROPERTY SRC_DIR ${ALL_SRCS})
add_subdirectory(a)       # 包含下级子目录math
add_subdirectory(b)

get_property(my_INCLUDE_DIR GLOBAL PROPERTY INCLUDE_DIR)
get_property(my_SRC_DIR GLOBAL PROPERTY SRC_DIR)

include_directories(${my_INCLUDE_DIR}) 
add_executable(hello_simple ${my_SRC_DIR})#指定生成目标、源文件


#a/Cmakelist:(其他目录的Cmakelist类似)
aux_source_directory(${CMAKE_CURRENT_LIST_DIR} ALL_SRCS)
add_subdirectory(a1)       # 包含下级子目录
set_property(GLOBAL APPEND PROPERTY INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR})
set_property(GLOBAL APPEND PROPERTY SRC_DIR ${ALL_SRCS})

使用:
在这里插入图片描述
选择编译器和一键build:
在这里插入图片描述
编译完成:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值