如何在解决方案资源管理器上保留源文件夹层次?

时间:2015-09-15 01:49:30

标签: c++ visual-studio cmake visual-studio-2015 solution-explorer

我在Linux上创建了一个C ++项目,并将源文件分组到许多目录中以组织自己。

我正在使用CMake进行编译,每个子目录都有一个CMakeFiles.txt。

$config['index_page'] = '';

最近,我使用Visual Studio 2015打开它,它找到了每个源文件,但只是将整个列表放在解决方案资源管理器的“源文件”文件夹中。

srcs
|--folderA
|  |--Toto.cpp
|  |--Tata.cpp
|
|--folderB
|  |--Foo.cpp
|  |--Bar.cpp
[...]

我计划拥有大量文件,很快就会很难找到。

有没有办法明确告诉它尊重解决方案资源管理器上的文件夹层次结构?

2 个答案:

答案 0 :(得分:3)

使用source_group命令。

  

source_group(<name> [文件<src>...] [REGULAR_EXPRESSION <regex>])

     

定义将源放置在项目文件中的组。这是为了在Visual Studio中设置文件选项卡。选项包括:

     

FILES   显式指定的任何源文件都将放在组中。相对路径是根据当前源目录解释的。

     

REGULAR_EXPRESSION   名称与正则表达式匹配的任何源文件都将放在组中。

答案 1 :(得分:0)

@James Adkison是正确的; source_group是您要使用的。从CMake 3.8开始,改进的source_group命令现在提供了TREE参数,以递归搜索源层次结构以创建与其匹配的源组。这是您提供的示例的基本解决方案:

project(MyProj)

set(MyProj_SOURCES
    "folderA/Toto.cpp"
    "folderA/Tata.cpp"
    "folderB/Foo.cpp"
    "folderB/Bar.cpp"
)

add_executable(Main ${MyProj_SOURCES})

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