(CMake Series) Part 6 - Creating Documentation with Doxygen, Sphinx, and Breathe

Introduction Preparing the Environment Doxygen Sphinx and Breathe CMake Configuration Ref Today, let’s talk about another perhaps less exciting aspect of CMake: documentati...

Read More

【CMake 系列】(六)用 Doxygen、Sphinx 与 Breathe 创建文档

今天,来说说 CMake 中另外一个可能比较枯燥的环节:文档。 前言 说起文档,就不得不提文档的维护了,如果纯手写,难免会遇到代码与文档不一致的情况,理想的状态下,最好全部由解析代码后生成,再加上开发人员少量写的说明性文档即可。 之前我也在 你的团队需要更好的 API 文档流程 里说过,好的 API 文档的特点也是类似。 至于我们今天要说的 C/C++ 的...

Read More

穷查理宝典:富有与智慧并存的老头子查理·芒格

这周暂时不写 CMake 的内容,换换口味,说说一本非常值得推荐的书《穷查理宝典:查理 · 芒格智慧箴言录》。 简介 作者是彼得 · 考夫曼,翻译者李继宏。 先来简单说下不足的地方:整体翻译欠佳,读起来会觉得比较絮叨,排版上也有不少问题,查理十一讲的内容有不少重复的地方,并且每一讲本身也有重复的地方,会让我觉着非常啰嗦。对于没有读过本书的朋友,重点读第二章...

Read More

(CMake Series) Part 5 - Installation, Packaging, and Export

Introduction Subfolder Install Compiled Products Installation Commands Export Packaging Export Compile Directory Introduction Today’s article can be considered a continuati...

Read More

【CMake 系列】(五)安装、打包与导出

前言 今天这篇,可以算是接着上次的 第三方依赖管理,因为今天说的是怎样成为第三方依赖。 当你开发库的时候,就需要考虑,其它人如何使用你的库。 就目前而言,目前有三种方式可以使用第三方库: 子文件夹(下载后编译、Git 克隆编译); 安装编译产物(各平台现有库,自己编译库下载配置); 导出编译目录; 下面分别来说说,该如何操作。 子文件夹 对使用者而言,...

Read More

(CMake Series) Part 4 - Testing with GoogleTest

Native CMake Testing Support GoogleTest Ref Today, let’s talk about testing with CMake. But actually, we are still talking about testing in C++. CMake provides us with compreh...

Read More

【CMake 系列】(四)用 GoogleTest 测试

今天我们来说说,CMake 测试。 不过,其实我们还是在说 C++ 的测试。 CMake 给我们提供了完善的测试支持,比如它有一个专门的模块 CTest。 CMake 原生测试支持 CMake 原生支持的测试很简单,只有两个函数: 12345enable_testing()add_test(NAME <name> COMMAND <com...

Read More

(CMake Series) Part 3 - ExternalProject Practice

ExternalProject Practice vcpkg Last time we talked about Third-Party Dependency Management and mentioned our team’s use of ExternalProject to manage dependencies. This time, l...

Read More

【CMake 系列】(三)ExternalProject 实践

上次 说了第三方依赖管理,提到了我们团队在使用 ExternalProject 来管理依赖,这次来说说具体实践,以及一个基于 CMake 的开源依赖管理工具 vcpkg。 ExternalProject 实践 来看看它长什么样: 1234ExternalProject_Add(<name> [<option>...])Externa...

Read More

(CMake Series) Part 2 - Third-Party Dependency Management

Dependency Management CMake find_package Third-Party Dependency Management Continuing from the last (CMake Series) Part 1 - Introduction. This time, let’s talk about dependenc...

Read More

【CMake 系列】(二)第三方依赖管理

接着上次的【CMake 系列】(一)入门 继续讲。 这次,主要说说 CMake 的依赖管理。 依赖管理 当我们说 CMake 的依赖管理的时候,往往说的是 C/C++ 项目的依赖管理,但是这门古老的语言,到目前为止,还是没有一个官方大一统的依赖管理工具。 而回头看看它的后来者,Ruby 有 gem、Node.js 有 npm、 Golang 有 go mo...

Read More

(CMake Series) Part 1 - Introduction

Introduction Preparation A Simple Example A Slightly More Complex Example Other Ref Since the last time I picked up C++ in Why the Order of C++ Static Libraries Matters, I’ve ...

Read More

【CMake 系列】(一)入门

自从上次在为何 C++ 静态链接库顺序很重要捡回了 C++,自此开始了不归路。 今天我们来说说,CMake 这个现代 C++ 项目的利器。 前言 为什么我们需要 CMake ? 对于 C++ 开发者来说,他们会习惯于使用 GNU Make 来编译 C++ 项目,对于简单项目来说,这无可厚非,再加上有那么多的开源工具可用,尤其是 autotools 系列,用...

Read More

如何给 Git 大项目瘦身

在上回,我在 如何克隆一个大 Git 项目 说到,遇到了克隆大项目的时候,如果遇到问题该如何解决,这次我们来继续聊聊,假如你是这种项目的维护者,该如何改善。 问题分析 相信你也看到了如果你维护的是一个大项目,会给那些新加入的参与者带来什么样的麻烦了。 那么,有什么方法可以解决这个问题呢?我们不妨先来看看大项目往往是什么原因造成的: 的确是个有历史大项目,...

Read More

如何克隆一个大 Git 项目

用 Git 克隆新项目,可以说是每个工程师必备的基础技能,然而,当你遇到克隆过程中的各种各样问题的时候,可知道如何处理? 遇到问题 某天在工作中,小 A 像往常一样要克隆一个新项目到本地,于是你熟练地敲下 1git clone git://github.com:example/awesome-project 然后很悲催的,小 A 发现它告诉你这个项目有几个...

Read More