【问题标题】:How to keep source folders hierarchy on solution explorer?如何在解决方案资源管理器上保留源文件夹层次结构?
【发布时间】:2015-12-11 03:23:41
【问题描述】:

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

我是用CMake编译的,每个子目录下有一个CMakeFiles.txt。

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

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

Source Files
|--Toto.cpp
|--Tata.cpp
|--Foo.cpp
|--Bar.cpp

我打算有大量的文件,很快就很难找到了。

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

【问题讨论】:

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


【解决方案1】:

使用source_group 命令。

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

定义一个组,将源文件放入项目文件中。这旨在在 Visual Studio 中设置文件选项卡。选项有:

文件 任何明确指定的源文件都将放在 group 中。相对路径是相对于当前源目录解释的。

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

【讨论】:

    【解决方案2】:

    @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})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-07
      • 1970-01-01
      • 2019-04-23
      • 1970-01-01
      • 2013-11-20
      • 1970-01-01
      相关资源
      最近更新 更多