👷项目是怎样构建的
在正式开始写代码之前,我们先了解一下项目的构建方式。
C程序是怎样生成的
// hello.c
#include <stdio.h>
int main() {
printf("Hello, WinterCode!\n");
return 0;
}
C项目是怎样搭建的
什么是模块
最后更新于
在正式开始写代码之前,我们先了解一下项目的构建方式。
// hello.c
#include <stdio.h>
int main() {
printf("Hello, WinterCode!\n");
return 0;
}
最后更新于
gcc -c hello.c -o hello.o # 编译
gcc hello.o -o hello # 链接gcc hello.c -o hello./hello
Hello, WinterCode!.PHONY: clean # 伪目标
# 自定义环境变量
CC = gcc # 指定编译器
CFLAGS = -I include # 指定头文件目录
CFILES = $(shell find src -name "*.c") # 搜索所有的源文件
OBJS = $(CFILES:.c=.o) # 所有的目标文件
TARGET = main # 最终生成目标
DATA = src/data/*.txt # 搜索所有的数据文件
RM = -rm -f # 删除方式
all: $(TARGET)
git commit -a -m "> make"
# 项目构建方式
$(TARGET): $(OBJS)
$(CC) -o $(TARGET) $(OBJS)
%o : %c
$(CC) -c $(CFLAGS) $< -o $@
clean:
$(RM) $(TARGET) $(OBJS) $(DATA)
git commit -a -m "> make clean"# 项目构建方式
$(TARGET): $(OBJS)
$(CC) -o $(TARGET) $(OBJS) # 将所有的目标文件链接形成最终的可执行文件
%o : %c
$(CC) -c $(CFLAGS) $< -o $@ # 编译所有的源文件CFLAGS = -I include # 指定头文件目录
CFILES = $(shell find src -name "*.c") # 搜索所有的源文件
OBJS = $(CFILES:.c=.o) # 所有的目标文件// hello.h
void hello();// hello.c
#include "hello.h" // 头文件的文件路径(相对于include文件夹的路径)
#include <stdio.h>
void hello() {
printf("Hello, WinterCode!\n");
}// main.c
#include "hello.h"
int main() {
hello();
return 0;
}gcc -c hello.c -o hello.o
gcc -c main.c -o main.o
gcc hello.o main.o -o main
./main
Hello, WinterCode!