cmake:在 CMake 生成的 VS2015 工程中保持源码文件的目录组织

在某一工程内,多个文件散乱的分布在 Source Files/ 目录和 Header Files 目录中, 不便于查看和调试代码,如下图所示.

在这里插入图片描述

通过使用 source_group 命令, 可以使源码保持原本的目录组织方式 (当然也可以自己重新组织).

先看看组织后的目录数:
cmake:在 CMake 生成的 VS2015 工程中保持源码文件的目录组织_第1张图片

目录组织 - source_group()

先看看官方给出的命令说明: source_group() 用于定义生成 IDE 工程时的源码分组 (source groups). 有两种创建方式:

source_group(<name> [FILES <src>...] [REGULAR_EXPRESSION <regex>])
source_group(TREE <root> [PREFIX <prefix>] [FILES <src>...])

cmake:在 CMake 生成的 VS2015 工程中保持源码文件的目录组织_第2张图片

source_group(outer\\inner ...)
source_group(TREE <root> PREFIX sources\\inc ...)

为了保证版本的向后兼容性, 以下命令的作用相同:

source_group(<name> <regex>)
source_group(<name> REGULAR_EXPRESSION <regex>)

例子

source_group(TREE ${CMAKE_SOURCE_DIR} FILES ${LIVE555_SRC_FILES})
source_group(TREE ${CMAKE_SOURCE_DIR} FILES ${HEADER_FILES})
source_group(TREE ${CMAKE_SOURCE_DIR} FILES ${SRC_FILES})

add_executable( ${PROJECT_NAME} 
                ${SRC_FILES} 
                ${LIVE555_SRC_FILES} 
                ${HEADER_FILES})

Note: 只有在 add_executable() 中的文件才会被 source_group 分组. 如果你发现有些文件没有被正确分组, 应该首先确认这些文件是否出现在 add_executable() 的 [source-x] 列表中.

对工程进行分类 - set_target_properties()

同类工程在一个的文件夹内,十分整洁. 可以使用 set_target_properties( )函数实现:

# 1. 打开允许创建文件夹的开关
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
# 2. 把工程加到文件夹中
set_target_properties(hk_camera_test PROPERTIES FOLDER "CMakeTargets")
# 3. 给 cmake 自动创建的工程重新命名, 默认名为 "CMakePredefinedTargets" 
set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets")

最终效果如下:
在这里插入图片描述

你可能感兴趣的:(C++,visual,studio,c++,ide)