CMake从入门到精通
文章平均质量分 81
从CMake的基础语法,到具体案例,然后再一步步到企业中如何使用CMake来进行C++代码管理
Achou.Wang
勿在浮沙筑高台
展开
-
cmake的使用-if-else的逻辑流程详解
Flow ControlsThe ubiquitous if() command provides the expected if-then-else behavior and looping is provided through the foreach() and while() commands.The if() Commandif(expression1)# commands ...elseif(expression2)# commands ...else()# commands .原创 2020-08-26 22:32:42 · 15267 阅读 · 0 评论 -
cmake的使用-为什么要使用CMake
介绍为了将源码转化为最终用户可以实际使用的东西,需要使用到编译器、链接器、测试框架、打包系统等,这些都增加了开发高质量、健壮性软件的复杂性,虽然一些IDE能够将这些过程简化一点,但是开发跨平台的软件并不是总能用到这些IDE的特性。幸运的是, CMake就是一套可以使上述开发过程易于管理的一套工具,它涵盖了从建立代码工程到发布包的所有过程everything),CMake不仅涵盖了所有的开发流程,还支持广泛的平台、工具和不同的编程语言。CMake使用的几个阶段如下:阶段一、CMake最出名的阶段-原创 2020-08-10 08:27:22 · 1415 阅读 · 0 评论 -
cmake的使用--从零建立一个小cmake工程
A minimal project# 说明最低cmake版本要求cmake_minimum_required(VERSION 3.2)# 工程名project(MyApp)# 可执行程序名add_executable(myExe main.cpp)支持添加多个文件add_executable(myExe main.cpp src1.cpp src2.cpp)命令不区分大小写add_executable(myExe main.cpp)ADD_EXECUTAB原创 2020-08-13 23:24:33 · 378 阅读 · 0 评论 -
cmake的使用--目标的编译附源码
building simple targetsExecutablesIf an executable is defined with the EXCLUDE_FROM_ALL option, it will not be included in that default ALL target.add_executable(targetName [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 [source2 ...])EXCLUDE_FR原创 2020-08-26 21:43:52 · 581 阅读 · 0 评论 -
cmake的使用--变量使用超详细详解
Variables为有用的参数命名Variable Basics像其他编程语言一样,变量是CMake工作的基石。使用set()命令进行变量的命名,变量对大小写敏感。set(varName value... [PARENT_SCOPE])In CMake, a variable has a particular scope, much like how variables in other languages have scope limited to a particular function,原创 2020-08-26 21:45:12 · 13800 阅读 · 0 评论 -
cmake中添加 -g编译选项
在cmake 3.12之前,添加编译选项可以如下方式添加add_definitions("-Wall -g")书中给出的示例如下:add_definitions(-DSomeSymbol /DFoo=Value ...)remove_definitions(-DSomeSymbol /DFoo=Value ...)但是到cmake 3.12之后,最好使用编译选项专用的添加方式:add_compile_definitions(SomeSymbol Foo=Value ...)通过指令$原创 2020-10-08 13:14:37 · 13852 阅读 · 1 评论 -
cmake的使用-目标类型详解
Target Types本章概括CMake支持的类型有很多种,可以是可执行文件或者库文件,也可以在不构建的情况下作为其它实体的引用。使用这种引用作用:可以在不将对象构建成自己的二进制文件的情况下,为这些被引用的文件属性和依赖项。你也可以将这些被引用的文件称为一种新型库,这种库不是传统意义上的静态库或者动态库,而是一种对象文件的集合。很多事物都可以抽象为一个对象来隐藏复杂的平台的差异、文件在系统中的位置、文件名等,本章会介绍所有对象类型,并介绍他们的用途。除了上述提到的静态库、动态库以及引用库,还有原创 2020-10-18 14:51:11 · 3824 阅读 · 1 评论