在Linux环境下使用C语言创建一个大工程,通常需要考虑以下几个方面:
my_project/
├── src/
│ ├── main.c
│ ├── module1/
│ │ ├── module1.c
│ │ └── module1.h
│ └── module2/
│ ├── module2.c
│ └── module2.h
├── include/
│ ├── common.h
│ └── ...
├── lib/
│ ├── lib1/
│ └── lib2/
├── Makefile
└── README.md
CC = gcc
CFLAGS = -Iinclude -Wall -O2
LDFLAGS = -Llib -l1 -l2
SRC = $(wildcard src/*.c src/module1/*.c src/module2/*.c)
OBJ = $(SRC:.c=.o)
TARGET = my_project
all: $(TARGET)
$(TARGET): $(OBJ)
$(CC) $(LDFLAGS) -o $@ $^
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(OBJ) $(TARGET)
CMake是一个跨平台的构建系统,可以生成Makefile、Visual Studio项目文件等。
cmake_minimum_required(VERSION 3.10)
project(MyProject)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O2")
include_directories(include)
add_executable(my_project
src/main.c
src/module1/module1.c
src/module2/module2.c
)
target_link_libraries(my_project
PRIVATE
lib1
lib2
)
初始化Git仓库并添加文件:
git init
git add .
git commit -m "Initial commit"
假设我们有一个简单的模块化项目,包含两个模块module1
和module2
,每个模块都有一个.c
和.h
文件。
module1.h
#ifndef MODULE1_H
#define MODULE1_H
void module1_function();
#endif // MODULE1_H
module1.c
#include "module1.h"
#include <stdio.h>
void module1_function() {
printf("Hello from module1!\n");
}
main.c
#include "module1.h"
#include "module2.h"
int main() {
module1_function();
module2_function();
return 0;
}
通过上述步骤,你可以创建一个结构清晰、易于维护的大型C语言工程。
Tendis系列直播
DB・洞见
DB・洞见
Alluxio Day 2021
Alluxio Day 2021
Alluxio Day 2021
大匠光临
Tencent Serverless Hours 第15期
企业创新在线学堂
领取专属 10元无门槛券
手把手带您无忧上云