深入 C 语言和程序运行原理
于航
PayPal 技术专家
21121 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 49 讲
深入 C 语言和程序运行原理
15
15
1.0x
00:00/00:00
登录|注册

22|生产加速:如何使用结构化编译加速 C 项目构建?

使用 CMake 完成编译
生成本地化构建项目
创建临时目录
目标的详细编译步骤
自定义宏
结构化编译
使用 Makefile
全量编译效率低
冗长命令管理
Meson
Ninja
Autotools
编译步骤
CMakeLists.txt 文件
生成平台本地构建项目
平台无关的配置
CMake 工具
Makefile 语法元素
优化 Makefile
部分解决全量编译问题
规则和依赖
Makefile 文件
make 工具
解决方案
问题
文件夹和文件命名的直观印象
自顶向下的结构理解
清晰易懂
src 目录管理应用程序代码
libs 目录管理库
功能模块化
混放在同一目录
includesrc 目录
工具的优点和不足
团队使用的自动化构建工具
CMake 作为首选工具的理由
结构化编译和跨平台构建的优势
源代码目录结构和编译流程的重要性
其他工具
跨平台自动化构建
使用 Makefile
基本原则
大型项目
小型项目
无“最佳实践”,需具体问题具体分析
思考题
总结
编译流程组织
源代码目录结构
C 项目构建加速与组织

该思维导图由 AI 生成,仅供参考

你好,我是于航。
在之前的课程中,我们曾遇到过很多段示例代码。而这些代码有一个共性,就是它们都十分短小,以至于可以被整理在一个单独的 .c 文件中。并且,通过简短的一行命令,我们就可以同时完成对代码的编译和程序的运行。
但现实情况中的 C 项目却往往没这么简单,动辄成百上千的源文件、各种各样的外部依赖与配置项,这些都让事情变得复杂了起来。因此,当 C 项目的体量由小变大时,如何组织其源代码的目录结构与编译流程,就成了我们必须去着重考虑的两个问题。而今天我们就来聊一聊,应该从哪些角度看待这两个问题。

如何组织 C 项目的源代码目录结构?

我们先来看与源码目录结构相关的话题。其实,对于 C 项目的源代码目录结构,应该使用哪种组织方式,通常没有所谓的“最佳实践”,而是要具体问题具体分析。
对于小型项目,我们可以简单地将 .h 与 .c 这两类源文件分别归纳在两个独立的目录 include 与 src 中,甚至是全部混放在同一个目录下。而当项目逐渐变大时,不同的 C 源文件就可以按照所属功能,再进行更细致的划分。
比如,能够以模块为单位,以库的形式进行抽象的实现,可以统一放在名为 libs 的目录下进行管理。而使用库接口实现的应用程序代码,则可放置在名为 src 的目录中。其他与 C 源代码没有直接关系的文件,可以自由保存在项目根目录,或放置在以对应分类命名的独立目录内。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何使用结构化编译加速 C 项目构建的方法。作者首先讨论了如何组织 C 项目的源代码目录结构,指出针对不同规模的项目,应该采取不同的组织方式,并强调了清晰易懂的原则。其次,文章探讨了如何组织 C 项目的编译流程,提出了使用 Makefile 进行结构化编译的方法。作者详细介绍了 Makefile 的语法和使用方式,并指出通过 Makefile 可以解决项目编译过程中的效率问题。最后,文章进一步优化了 Makefile 中的配置项,使得编译目标与中间依赖项分离,提高了整个编译脚本的可读性和可用性。整体而言,本文通过实际案例和详细讲解,为读者提供了一种有效的方法来加速 C 项目的构建过程,尤其适用于大型项目的开发和维护。文章还介绍了使用 CMake 进行跨平台的自动化构建,以及其他可选用工具。通过抽象平台相关的配置信息,CMake 实现了跨平台的项目自动化构建,为读者提供了更清晰易懂的配置信息。整体而言,本文内容丰富,涵盖了 C 项目构建的多个方面,为读者提供了全面的指导和思路。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入 C 语言和程序运行原理》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • Frank
    Cmake 可以用于windows 么?

    作者回复: 看了下是支持的哈,具体可以参考这里:https://cmake.org/download/

    2022-03-10
    5
    1
  • Luke
    之前用qt的IDE开发,qmake为主,现在也在尝试cmake,还在学习中。

    作者回复: 赞!

    2022-09-22归属地:江苏
  • Geek_4c94d2
    cmake,在linux下可以直接生成makefile,所以可以cmake .. ; make
    2022-02-23
    3
  • zhangyazhou
    xmake这个工具也不错,而且是国人开发的。
    2022-11-16归属地:中国香港
    1
  • brian
    为何glibc是通过写configure来配合make构建的
    2023-04-26归属地:芬兰
  • 奔驰的老汤姆
    两家公司用的都是bazel
    2023-03-31归属地:北京
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部