vi使用教程

一、关于vi

vi是最强大的文本编辑器,没有之一。

尽管vi已经是古董级的软件,但还是有无数新人迎着困难去学习使用,可见其经典与受欢迎的程度。

无论是小说中还是电视剧,真正强大的武器都不容易驾驭,需要付出一些努力才能收获到更加强大的力量,对于vi这种上古神器来说更是如此。

由于它全程使用键盘操作,很多首次接触 vi的人会觉得不习惯而中途放弃。然而,坚持下来的朋友就会渐渐地发现这种键盘操作的设计绝妙,经典之所以能成为经典,必然有它的道理,不用解释太多。

观察一个程序员对vi的熟练程度,可以判断它的技术水平,如果他对vi不熟悉,就肯定不是Linux平台下的程序员,说vi不好用的人也肯定不熟悉vi和Linux,没有例外。

查看更多

10.使用控制流

10.使用控制流

使用控制流 (Linux 环境下正常)


本章前面的示例中,已经使用过 if-else-endif 。

CMake还提供了创建循环的语言工具: foreach endforeach 和 while-endwhile 。两者都可以与 break 结合使用,以便尽早从循环中跳出。

本示例将展示如何使用 foreach ,来循环源文件列表。我们将应用这样的循环,在引入新目标的前提下,来为一组源文件进行优化降级。

具体实施


查看更多

9.为语言设定标准

9.为语言设定标准

设置编译器选项


编程语言有不同的标准,即提供改进的语言版本。启用新标准是通过设置适当的编译器标志来实现的。
前面的示例中,我们已经展示了如何为每个目标或全局进行配置。

3.1版本中,CMake引入了一个独立于平台和编译器的机制,用于为 C++ 和 C 设置语言标准:为目标设置_STANDARD 属性。

具体实施


查看更多

8.设置编译器选项

8.设置编译器选项

设置编译器选项


前面的示例展示了如何探测 CMake,从而获得关于编译器的信息,以及如何切换项目中的编译器。后一个任务是控制项目的编译器标志。CMake为调整或扩展编译器标志提供了很大的灵活性,您可以选择下面两种方法:
CMake 将编译选项视为目标属性。因此,可以根据每个目标设置编译选项,而不需要覆盖 CMake 默认值。
可以使用 -D CLI 标志直接修改 CMAKE__FLAGS_变量。这将影响项目中的所有目标,并覆盖或扩展 CMake 默认值。

具体实施


  1. 设置CMake的最低版本:

查看更多

7.切换构建类型

7.切换构建类型

切换构建类型


CMake可以配置构建类型,例如:Debug、Release等。配置时,可以为Debug或Release构建设置相关的选项或属性,
例如:编译器和链接器标志。控制生成构建系统使用的配置变量是CMAKE_BUILD_TYPE。该变量默认为空,CMake识别的值为:
Debug: 用于在没有优化的情况下,使用带有调试符号构建库或可执行文件。
Release: 用于构建的优化的库或可执行文件,不包含调试符号。
RelWithDebInfo:用于构建较少的优化库或可执行文件,包含调试符号。
MinSizeRel: 用于不增加目标代码大小的优化方式,来构建库或可执行文件。

具体实施


查看更多

5.向用户显示选项

5.向用户显示选项

向用户显示选项

前面的配置中,我们引入了条件句:通过硬编码的方式给定逻辑变量值。不过,这会影响用户修改这些变量。

CMake代码没有向读者传达,该值可以从外部进行修改。推荐在 CMakeLists.txt 中使用 option() 命令,

以选项的形式显示逻辑开关,用于外部设置,从而切换构建系统的生成行为。

本节的示例将向您展示,如何使用这个命令。

查看更多

3.构建和链接静态库和动态库

3. 构建和链接静态库和动态库


项目中会有单个源文件构建的多个可执行文件的可能。项目中有多个源文件,通常分布在不同子目录
中。这种实践有助于项目的源代码结构,而且支持模块化、代码重用和关注点分离。同时,这种分离可
以简化并加速项目的重新编译。本示例中,我们将展示如何将源代码编译到库中,以及如何链接这些
库。

具体实施


查看更多

2.切换生成器

2.切换生成器

显示构建器 (cmake –help)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
$ cmake --help
...
Generators

The following generators are available on this platform (* marks default):
* Visual Studio 16 2019 = Generates Visual Studio 2019 project files.
Use -A option to specify architecture.
Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files.
Optional [arch] can be "Win64" or "IA64".
Visual Studio 9 2008 [arch] = Generates Visual Studio 2008 project files.
Optional [arch] can be "Win64" or "IA64".
Borland Makefiles = Generates Borland makefiles.
NMake Makefiles = Generates NMake makefiles.
NMake Makefiles JOM = Generates JOM makefiles.
MSYS Makefiles = Generates MSYS makefiles.
MinGW Makefiles = Generates a make file for use with
mingw32-make.
Green Hills MULTI = Generates Green Hills MULTI files
(experimental, work-in-progress).
Unix Makefiles = Generates standard UNIX makefiles.
Ninja = Generates build.ninja files.
Ninja Multi-Config = Generates build-<Config>.ninja files.
Watcom WMake = Generates Watcom WMake makefiles.
CodeBlocks - MinGW Makefiles = Generates CodeBlocks project files.
CodeBlocks - NMake Makefiles = Generates CodeBlocks project files.
CodeBlocks - NMake Makefiles JOM
= Generates CodeBlocks project files.
CodeBlocks - Ninja = Generates CodeBlocks project files.
CodeBlocks - Unix Makefiles = Generates CodeBlocks project files.
CodeLite - MinGW Makefiles = Generates CodeLite project files.
CodeLite - NMake Makefiles = Generates CodeLite project files.
CodeLite - Ninja = Generates CodeLite project files.
CodeLite - Unix Makefiles = Generates CodeLite project files.
Eclipse CDT4 - NMake Makefiles
= Generates Eclipse CDT 4.0 project files.
Eclipse CDT4 - MinGW Makefiles
= Generates Eclipse CDT 4.0 project files.
Eclipse CDT4 - Ninja = Generates Eclipse CDT 4.0 project files.
Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files.
Kate - MinGW Makefiles = Generates Kate project files.
Kate - NMake Makefiles = Generates Kate project files.
Kate - Ninja = Generates Kate project files.
Kate - Unix Makefiles = Generates Kate project files.
Sublime Text 2 - MinGW Makefiles
= Generates Sublime Text 2 project files.
Sublime Text 2 - NMake Makefiles
= Generates Sublime Text 2 project files.
Sublime Text 2 - Ninja = Generates Sublime Text 2 project files.
Sublime Text 2 - Unix Makefiles
= Generates Sublime Text 2 project files.

具体实施(用 -G 切换生成器)

  1. 首先,使用以下步骤配置项目:

    1
    2
    3
    $ mkdir build
    $ cd build
    $ cmake -G "CodeBlocks - Unix Makefiles" ..
查看更多