这是维护大型 C++ 项目的良好目录结构吗?

nic*_*225 5 c++ directory-structure cmake

我一直在尝试找出一个适合大型 C++ 项目维护的良好目录结构。在我的搜索过程中,我在这里发现了这个资源链接。如果我松散地遵循该文档中所述的结构,似乎我会得到类似于以下内容的内容

\n\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Executable-OutputA\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Library-OutputA\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 cmake\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 *.cmake\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 docs\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 include\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 *.h\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 LibraryA\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 *.cpp\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 *.h\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 LibraryB\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 *.cpp\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 *.h\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ExecutableA\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 *.cpp\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 *.h\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 ExecutableB\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 *.cpp\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 *.h\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tests\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 third_party\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 External-ProjectA\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 External-ProjectB\n
Run Code Online (Sandbox Code Playgroud)\n\n
    \n
  • build:保存项目生成的输出可执行文件和库
  • \n
  • cmake:保存项目可能需要的所有cmake包
  • \n
  • doc:保存文档文件,通常是 doxygen
  • \n
  • include:保存公共头文件(可能不需要,不确定)
  • \n
  • lib:保存用户使用各自的源文件和头文件创建的所有库
  • \n
  • src:保存用户使用各自的头文件和源文件创建的所有可执行项目
  • \n
  • 测试:用于测试可执行文件和库的文件
  • \n
  • Third_party:任何第三方项目、库等。通常从网上下载或克隆
  • \n
\n\n

我相信这对于大型项目来说是一个合适的结构,但我对产生超过 3 或 4 个目标的项目没有太多经验。我想向社区征求反馈,看看他们是否同意上面列出的结构,或者有更好的建议。

\n\n

编辑:我找不到太多详细说明大型项目的多个目标输出以及第三方依赖项的帖子。

\n