c/c++项目的组织 您所在的位置:网站首页 c语言开发的大型项目 c/c++项目的组织

c/c++项目的组织

2024-07-12 00:07| 来源: 网络整理| 查看: 265

c/c++语言项目的组织

安装c/c++编译器:

sudo apk add build-base # for alpinelinux sudo yum -y install gcc gcc-c++ # for centos 最简单的c/c++组织方法 最简单的做法:一个main()函数写到底。理性一点:把一些模块写成函数放到main()外面。

以汽车car举例:

/* file name: main.c */ #include void run(char *name){ printf("%s is running\n", name); } int main(){ run("Rolls-Royce"); } gcc -o main main.c ./main # Rolls-Royce is running...

优点:快,简单。

缺点:项目大一点就麻烦了。

c/c++头文件拆分法

高级的模块化:接口(函数,类)与实现(源文件)分离。

目录结构:

./ |- car.h |- car.c |- main.c 接口,定义在头文件里: /* file name: car.h */ void run(char *name); 实现,定义在源文件里: /* file name: car.c */ #include #include "car.h" void run(char *name){ printf("%s is running...\n", name); } 使用: /* file name: main.c */ #include "car.h" int main(){ run("Rolls-Royce"); } gcc -o main car.c main.c ./main # Rolls-Royce is running... 用cmake组织

当写的文件有点多的时候,模块化的优势就很明显。我们需要更高效的源码组织方式。

alpinelinux安装cmake:

$sudo apk add cmake # 安装cmake和make。 极简版

目录结构:

./ |- car.h |- car.c |- main.c |- CMakeLists.txt |- build/

编写CMakeLists.txt

cmake_minimum_required(VERSION 3.0.0) project(ProjectNameHere) add_executable(main main.c car.c)

使用方法:

cd build # goto build directory cmake .. # 使用上层的CMakeLists.txt 生成 makefile make # 编译 ./main # 运行 复杂一点的结构,带有子项目(放在src/):

目录结构:

./ |- main.cpp |- CMakeLists.txt |- src/ | |- CMakeLists.txt | |- car.cpp | |- car.h |- build/

我们发现有两个CMakeLists.txt:

里面那个CMakeLists.txt负责本文件夹的子项目: aux_source_directory(. SRC_LIST) add_library(awesome_lib_name ${SRC_LIST})

注解:aux_source_directory(dir VAR) 查找一个目录下所有的源代码文件并将列表存储在一个变量中.

最外层的那个CMakeLists.txt负责整个项目。

内容如下:

cmake_minimum_required(VERSION 3.0.0) project(peojectNameHere) aux_source_directory(. ROOT_DIR) add_subdirectory(src) add_executable(main ${ROOT_DIR}) target_link_libraries(main awesome_lib_name)

使用方法:

cd build # goto build directory cmake .. # 使用上层的CMakeLists.txt 生成 makefile make # 编译 ./main # 运行 总结

cmake与make是怎样工作的,为什么要用cmake?

make是以makfile为基础的项目构建工具,只是Makefile的可移植性较差,跨平台意味着要重新编写。

如何学习cmake?

cmake复杂的很:见CMake 如何入门? - 0xCCCCCCCC的回答 - 知乎 我的要求不高, 能用就行。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有