种种原因,促使我开始写一份“面向使用和实用”的cmake文档,也就是本教程《Cmake实践》(Cmake Practice) 本文档是边学习边编写的成果,更像是一个学习笔记和Tutorial,因此难免有失误或者理解不够透彻的地方,比如,我仍然不能理解为什么绝大部分使用变量的情况要通过${}引用,而在IF语句中却必须直接使用变量名。也希...
Cmake实践(Cmake Practice)第一部分 参考资料地址:https://github.com/Akagi201/learning-cmake/blob/master/docs/cmake-practice.pdf 一、初识cmake 1. Cmake特点 开放源代码 跨平台 能够管理大型项目 简化编译构建和编译过程(常用流程:cmake + make) 高效率 可扩展 每个目录编写一份CMakeLists.txt 二、初试...
Cmake Practice 总结 常用指令 基本指令 add_definitions 向C/C++ 编译器添加 -D 定义,比如: add_definitions(-DENABLE_DEBUG -DABC),参数之间用空格分割。 如果你的代码中定义了 #ifdefENABLE_DEBUG...#endif 这个代码块就会生效。 如果要添加其他的编译器开关,可以通过 CMAKE_C_FLAGS 变量和 CMAKE_CXX_FLA...
这里就是HELLO_BINARY_DIR和HELLO_SOURCE_DIR(所以CMakeLists.txt中两个message指令可以直接使用了这两个变量),因为采用的是内部编译,两个变量目前指的都是工程所在路径/home/xiao/cmake_practice/t1/,后面我们会讲到外部编译,两者所指代的内容会有所不同。
/* Note_book: Cmake Practice --Cjacker */ /* 说明: * 如果所用的 cmake 版本比本文档中所述版本要高,则可以在构建定义文件 CMakeLists.txt 的开头添加以下 * 代码: * cmake_minimum_required(VERSION 2.4.6) * (注:本文档所用 cmake 版本为 2.4.6,而测试用的 cmake 版本是 3.10.2) * 并且...
这个指令隐式的定义了两个cmake变量:_BINARY_DIR 以及_SOURCE_DIR,这里就是HELLO_BINARY_DIR和HELLO_SOURCE_DIR(所以CMakeLists.txt中两个message指令可以直接使用了这两个变量),因为采用的是内部编译,两个变量目前指的都是工程所在路径/home/xiao/cmake_practice/t1/,后面我们会讲到外部编译,两者所指代的内容会...
Cmake Practice 总结 复杂例子 本章我们将着重介绍系统预定义的 find 模块的使用以及自己编写 find 模块,系统中提供了其他各种模块,一般情况需要使用 include 指令显式的调用,find_package 指令是一个特例,可以直接调用预定义的模块。 其实使用纯粹依靠 cmake 本身提供的基本指令来管理工程是一件非常复杂的事情,所以,...
这里通过一个简单的例子来演练一下cmake的完整构建过程。 1、准备工作 在/backup目录建立一个cmake目录,用来放置学习过程中的所有练习 mkdir -p /backup/cmake 建立第一个练习目录 cd /backup/cmake mkdir t1 cd t1 在t1目录建立main.c 和 CMakeLists.txt ...
Cmake Practice 总结 复杂例子 本章我们将着重介绍系统预定义的 find 模块的使用以及自己编写 find 模块,系统中提供了其他各种模块,一般情况需要使用 include 指令显式的调用,find_package 指令是一个特例,可以直接调用预定义的模块。
Cmake实践(Cmake Practice)第二部分 参考资料地址:https://github.com/Akagi201/learning-cmake/blob/master/docs/cmake-practice.pdf 一、静态库与动态库构建 本小节目标如下: 建立一个静态库和动态库,提供HelloFunc函数供其他程序编程使用,HelloFunc向终端输出Hello World字符串...