C++项目目录结构
自己的想法
1 | project |
其中src
1 | 下面可以为 |
- 3rdparty : 用于存放第三方库,每个第三库以单独目录的形式组织在3rdparty目录下。其中每个第三方目录下又有
include
和lib
分别存放第三方库的头文件和库文件。
参考
1 | project_name |
- deploy : 用于存放部署、交付的文件,其包含子目录bin、lib、include分别存放本项目最总生成的可执行文件、库文件以及对外所提供的头文件。
- build : 用于存放build时cmake产生的中间文件,其包含子目录release和debug。
- doc : 用于存放项目的相关文档。
- 3rdparty : 用于存放第三方库,每个第三库以单独目录的形式组织在3rdparty目录下。其中每个第三方目录下又有
include
和lib
分别存放第三方库的头文件和库文件。 - include/project_name : 用于存放每个模块以及整个工程对外的头文件。具体格式如下文。
- project_name : 存放源码文件,以及内部头文件。具体格式如下文。
- tools : 包含一些支持项目构建的工具,如编译器等,一般情况下使用软链接。
- scripts : 包含一些脚本文件,如使用Jenkins进行自动化构建时所需要的脚本文件,以及一些用于预处理的脚本文件。
- platforms : 用于一些交叉编译时所需要的工具链等文件,按照平台进行划分来组织子目录。每个子目录下存放
toolchain.cmake
等用于指定平台的文件。 - test : 分模块存放测试代码。
- LICENSE : 版权信息说明。
- CMakeLists.txt : cmake文件。
- build.sh : build脚本文件。
- .gitignore : 指明git忽略规则。
- readme.md : 存放工程说明文件。
- sample : 存放示例代码。
参考2
C++项目的组织方式可能因为项目的规模、类型、目标平台等因素而有所不同,但是一般来说,一个良好的C++项目应该遵循以下几个原则1:
- 有一个清晰的目录结构,区分不同的部分,如源代码、头文件、文档、资源、测试、工具等。
- 有一个可靠的构建系统,可以根据不同的环境生成相应的Makefile或者项目文件,如使用CMake、Makefile、Visual Studio等。
- 有一个合理的依赖管理,避免不必要的头文件包含,使用相对路径或者预定义的变量来引用外部库或者模块。
- 有一个完善的文档,说明项目的功能、用法、协议、注意事项等。
- 有一个规范的代码风格,遵循一致的命名规则、缩进规则、注释规则等。
1 | project |
参见下面的
1 | project —+—build—+—debug |
参考3
干货:构建C/C++良好的工程结构 - 知乎 (zhihu.com)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 xd's blog!
评论