Visual Studio IDE中,通过CMake组织源码目录

Visual Studio IDE中,通过CMake组织源码目录

利用CMake组织代码时,如果通过visual studio IDE打开工程时,在解决方案中,通常会表现出如下的代码树结构:
在这里插入图片描述
其对应的CMakeLists内容通常如下:

set(StnConfig_Files
	UniConfig.h
	UniConfig.cpp
)

if (MSVC)
	source_group("StnConfig Files" FILES ${StnConfig_Files}) 
endif()

add_library(targetname SHARED ${Header_Files} ${Source_Files} ${StnConfig_Files})

当工程文件变多时,我们通常会将不同的文件按需放在指定的文件夹下。同样地,我们也希望在IDE的工程代码树中能以嵌套的组织目录将代码文件呈现出来:
在这里插入图片描述
CMake中的 source_group 另一个版本可以满足如上需求:

source_group(TREE <root> [PREFIX <prefix>] [FILES <src>...])
  • TREE CMake 会自动检测 <src> 文件路径来确定需要创建的 source groups, 使得工程中的目录结构与实际文件在磁盘上的目录结构保持一致。<src>文件的路径将被切割成相对于<root>的路径;
  • PREFIX<root> 路径中的 Source group 和文件会被放在 <prefix> group 中;

假设我有如下的代码目录:
在这里插入图片描述
其对应的CMakeLists内容更改如下:

set(SOURCE_LIST
	chap05/hexspinbox/hexspinbox.h
	chap05/hexspinbox/hexspinbox.cpp
	chap05/iconeditor/iconeditor.h
	chap05/iconeditor/iconeditor.cpp
	chap06/findfile1/findfiledialog.h
	chap06/findfile1/findfiledialog.cpp
)

if (MSVC)
	# Create the source groups for source tree with root at CMAKE_CURRENT_SOURCE_DIR.
	source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${SOURCE_LIST})
endif()

add_executable(${targetname} ${Header_Files} ${Source_Files} ${SOURCE_LIST})

Note: ${SOURCE_LIST} 需要在构建 target 的列表里,否则 source_group(TREE …) 不会起作用!
VS IDE中的工程目录如下:
在这里插入图片描述
[1]: https://cmake.org/cmake/help/v3.8/command/source_group.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值