Skip to content

EricWu123/linux-cpp-make-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

cc93b66 · Jun 24, 2024

History

8 Commits
Jun 24, 2024
Jun 24, 2024
Jun 24, 2024
Jun 24, 2024
Jun 24, 2024
Jun 24, 2024
Jun 24, 2024
Jun 24, 2024

Repository files navigation

项目名称

这是一个 Makefile 模板项目,附带了一个示例 C/C++ 项目,包含多个子目录(如 srctests)。该项目既可以生成可执行文件,也可以生成动态库,并包含单元测试。

项目结构

project/
├── Makefile
├── Makefile.inc
├── READMD.md
├── include
│   ├── common.h
│   ├── foo.h
│   ├── main.h
│   ├── module_a.h
│   ├── module_b.h
│   └── sub_module_a.h
├── src
│   ├── Makefile
│   ├── app
│   │   ├── Makefile
│   │   ├── main.cpp
│   │   ├── module_a
│   │   │   └── module_a.c
│   │   └── module_b
│   │       └── module_b.cpp
│   ├── common
│   │   └── common.c
│   └── libfoo
│       ├── Makefile
│       ├── foo.c
│       └── submodule_a
│           └── sub_module_a.c
└── tests
    ├── Makefile
    └── test.cpp

目录说明

  • include/:公共头文件目录。
  • src/:源代码目录
  • src/app:源代码目录,生成可执行文件。
  • src/libfoo:源代码目录,生成动态库。
  • src/common:源代码目录,动态库和可执行文件的公共代码。
  • tests/:单元测试目录,用于编译和运行测试代码。
  • build/:编译过程中生成的中间文件(对象文件)目录。
  • Makefile:顶层 Makefile,管理整个项目的构建。
  • Makefile.inc:公共 Makefile 规则和变量定义文件。

使用说明

编译所有目标

在项目根目录下执行以下命令:

make

这将编译所有子目录中的目标,包括可执行文件和动态库。

编译特定目标

如果只需要编译某个子目录中的目标,可以进入该目录并执行 make

cd src/app
make

或者直接在项目根目录下指定子目录:

make -C src/app

清理编译生成的文件

在项目根目录下执行以下命令:

make clean

这将清理所有子目录中编译生成的文件。

运行单元测试

在项目根目录下执行以下命令:

make test

这将在 tests 目录中编译并运行测试代码。

扩展和自定义

为了扩展和自定义项目的构建过程,可以在各子目录的 Makefile 中调整 TARGETSRC_DIRSINCLUDE_DIRCPPFLAGSCFLAGSLDFLAGS 变量。

About

Linux C/C++ 通用 Makefile 模板

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published