c/c++项目的组织 | 您所在的位置:网站首页 › c语言开发的大型项目 › c/c++项目的组织 |
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 实验室设备网 版权所有 |