C++ 包管理学习
前言
要把一个老项目的所有依赖迁移到Conan上使用CMake编译 由此查缺补漏了不少知识缺口
学习
构造系统
编译器 构建脚本 构建工具
GCC/Clang/MSVC -> Makefile/MSBuild -> confirgue(&autotools)/CMake/SCons/Ninja
构建脚本指导编译器编译 构建工具在不同平台生成不同的构建脚本以提供兼容性
封装和包
包是什么 包就是包管理器中分发管理的已经打包好的程序库 可以作为模块化编程的组件(component/module)
模块化编程
模块化编程是一种程序设计手法 强调把一个程序拆分成多个独立运行的"模块"
模块化编程像结构化编程和面向对象编程一样 都致力于通过拆分的方式改善大型软件和系统的构建 它们作用于不同的高度(level)
个人理解为针对不同层面 譬如程序与程序之间 代码块与代码块之间 类与类之间
Conspicuous examples of languages that lack support for modules are C, C++.
C and C++ do, however, allow separate compilation and de