在 Debian(或其他 Linux 发行版)上编译多文件 C/C++ 项目,常见做法有几种,从简单手动编译到使用构建工具。下面按由浅入深的方式说明。
gcc / g++ 编译project/
├── main.c
├── foo.c
├── foo.h
foo.h
#ifndef FOO_H
#define FOO_H
void foo(void);
#endif
foo.c
#include <stdio.h>
#include "foo.h"
void foo(void) {
printf("Hello from foo\n");
}
main.c
#include "foo.h"
int main() {
foo();
return 0;
}
gcc main.c foo.c -o myprogram
运行:
./myprogram
✅ 适合:文件很少、学习阶段
gcc -c foo.c -o foo.o
gcc -c main.c -o main.o
gcc main.o foo.o -o myprogram
优点:
.oMakefile(Debian 最常用)CC = gcc
CFLAGS = -Wall
OBJS = main.o foo.o
myprogram: $(OBJS)
$(CC) $(OBJS) -o myprogram
main.o: main.c foo.h
$(CC) $(CFLAGS) -c main.c
foo.o: foo.c foo.h
$(CC) $(CFLAGS) -c foo.c
clean:
rm -f *.o myprogram
make # 编译
make clean # 清理
✅ 适合:中小型 C/C++ 项目
只需把 gcc 换成 g++:
g++ main.cpp foo.cpp -o myprogram
Makefile 中:
CXX = g++
project/
├── CMakeLists.txt
├── main.cpp
├── foo.cpp
├── foo.h
cmake_minimum_required(VERSION 3.10)
project(myprogram)
add_executable(myprogram main.cpp foo.cpp)
mkdir build
cd build
cmake ..
make
运行:
./myprogram
✅ 适合:中大型项目、跨平台
如果命令不存在:
sudo apt update
sudo apt install build-essential
包含:
CMake:
sudo apt install cmake
| 场景 | 推荐方式 |
|---|---|
| 学习 / 少量文件 | gcc 手动 |
| 课程作业 | Makefile |
| 工程 / 团队 | CMake |
| C++ 项目 | g++ / CMake |
如果你愿意,可以告诉我:
我可以直接帮你写 Makefile 或 CMakeLists.txt。