CMake 为visual studio 工程创建筛选器

本文介绍了如何使用CMakeLists.txt来定制工程文件的筛选器,以便按照代码目录结构组织头文件和源文件。通过设置source_group,可以将不同模块的文件分组,使得在IDE中显示的工程结构更符合实际的代码组织方式,提高开发效率。
摘要由CSDN通过智能技术生成

默认vs filter

代码目录结构如下:

│  CMakeLists.txt
├─bin
│              
├─main
│      main.cpp
│      main.h
│      
├─math
│  │  kalman.cpp
│  │  kalman.h
│  │  
│  └─matrix
│          quat.cpp
│          quat.h
│          
└─uav
        control.cpp
        control.h

使用如下CMakeLists.txt

cmake_minimum_required(VERSION 2.8.9)
project(TEST)

set(SOURCES
main/main.h
main/main.cpp
math/kalman.h
math/kalman.cpp
math/matrix/quat.h
math/matrix/quat.cpp
uav/control.h
uav/control.cpp
)
add_executable(MAIN ${SOURCES})

那么生成的的工程文件中会有默认筛选器,Header Files 和 Source Files,如下,对于大型工程来说好多人不太习惯这种组织方式,而是想把同一类别头文件和源文件放一起,就如同代码的文件目录结构一致:

使用source_group建立筛选器

修改CMakeLists.txt如下:

cmake_minimum_required(VERSION 2.8.9)
project(TEST)

set(SOURCES
main/main.h
main/main.cpp
)
set(MATHSRC
math/kalman.h
math/kalman.cpp
)
set(MATSRC
math/matrix/quat.h
math/matrix/quat.cpp
)
set(UAVSRC
uav/control.h
uav/control.cpp
)
source_group(main FILES ${SOURCES})
source_group(math FILES ${MATHSRC})
source_group(math\\matrix FILES ${MATSRC})
source_group(uav FILES ${UAVSRC})

add_executable(MAIN ${SOURCES} ${MATHSRC} ${MATSRC} ${UAVSRC})

 我们发现默认的两个筛选器Header Files 和 Source Files消失了。




  • FILE 全局搜索文件存入变量中
#全局搜索.h和.cpp文件放入LOGWIN变量中
FILE(GLOB LOGWIN "log/logan-win/*.h" "log/logan-win/*.cpp")
FILE(GLOB CLOGAN "log/logan-win/Clogan/*.h" "log/logan-win/Clogan/*.c")
FILE(GLOB MBEDTLS_INCLUDE "log/logan-win/mbedtls/include/mbedtls/*.h" )
FILE(GLOB MBEDTLS_LIB "log/logan-win/mbedtls/library/*.h" "log/logan-win/mbedtls/library/*.c")
  • source_group 用于整理工程中的文件,将头文件源文件那目录结构进行分组
source_group(log/logan-win FILES ${LOGWIN})
source_group(log/logan-win/Clogan FILES ${CLOGAN})
source_group(log/logan-win/mbedtls/include FILES ${MBEDTLS_INCLUDE})
source_group(log/logan-win/mbedtls/library FILES ${MBEDTLS_LIB})

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值