代码文件的组织

一个 C++项目中推荐使用以下这些目录来对相应的文件和库进行归集。

  • build/,项目编译目录,用来存放编译的临时文件和最终目标文件,其中可以继续建立debug/release/目录来分别存放调试用可执行文件和发布用可执行文件。
  • dist/,项目发布目录,用来存放最终可以发布的可执行文件和全部支持文件。
  • doc/,项目文档目录。
  • include/,公共头文件目录,可以按照模块来划分组织各个模块的头文件。
  • lib/,外部依赖库目录。
  • res/,资源目录。
  • samples/,示例代码目录。
  • src/,项目源代码目录。
  • tools/,项目支持工具目录。
  • makefile,项目构建配置文件。
  • CMakeLists.txt,CMake 配置文件。

项目的源码可以直接在项目根目录中放置也可以选择放置在src/目录中,头文件可以放在根目录中,也可以放在include/目录中,这完全由个人和团队的喜好决定。

Tip

常常可以见到在src/目录中还有其他的目录,在C++中,这些子目录通常会独立编译为一个库。但是由于C++对于内容的组织是十分自由的,所以对于代码的划分和存储也并没有什么定式。

后文中将要提到的命名空间,与项目目录结构毫无关联,请勿将其混淆。但#include预处理指令与项目目录结构关联较深,需要注意。

每个 C++应用都是从main()函数开始执行的,不论main()函数位置在什么地方,应用中应该有且仅有一个main()函数。C++允许main()函数带有或者不带参数列表,但main()函数返回值始终是整型。main()函数的声明一般是以下固定形式:int main(int argc, char *argv[]),其中argc表示程序接收到的参数的数量,argv[]用于接收传递来的参数,参数是以字符串数组的方式传递来的。具体main()函数的定义会在后文中具体说明。