CMake漫谈
来源:互联网 发布:常用电路设计软件 编辑:程序博客网 时间:2024/06/05 09:38
最近在学习Mysql的源代码,用到了CMake做为Build工具。
通过CMake去扫描系统的一些配置,会生成config.h文件,这个头文件里包含了一系列的以HAVE_为前缀的宏。
在源代码根目录下的config.h.cmake 是模板文件,包含了所有的扫描项。
在Mysql的影子编译目录里面(我一般都是用影子编译,保持源代码目录的纯洁性),我们可以找到config.h,CMake脚本会把config.h拷贝成另外一个内容完全一模一样的my_config.h文件。
我们现在以 HAVE_NPTL 这个宏使用在Mysql源代码中的这种情况为例学习CMake的原理:
我们浏览Mysql目录的CMake目录,这个是Mysql专有的CMake脚本,我们通过查找,在cmake\os\linux.cmake中找到了 HAVE_NPTL的定义。
在这个文件里HAVE_NPTL是固定设为1的,我们继续学习非固定设置的情况。
比如 CHECK_SYMBOL_EXISTS(SHM_HUGETLB sys/shm.h HAVE_DECL_SHM_HUGETLB)
该CMake文件的包含了 INCLUDE(CheckSymbolExists)
CheckSymbolExists 是CMake的公共模块,我的机器上位于/usr/share/cmake-2.8/Modules目录下。
我们继续研究该文件:
阅读了其源代码后,MACRO(CHECK_SYMBOL_EXISTS SYMBOL FILES VARIABLE)
这个宏的作用就是,查找相关文件(FILES)里面是否包含相关符号(SYMBOL) 如果存在则设置VARIABLE 为1,MESSAGE宏会在屏幕上做相关打印。
上面的列子中就是在 sys/shm.h 文件里面查找SHM_HUGETLB 符号。
我们查看 /usr/include/shm.h
- CMake漫谈
- 漫谈
- 漫谈
- cmake
- cMAKE
- cmake
- CMake
- Cmake
- cmake
- cmake
- CMake
- cmake
- CMake
- CMake
- CMake
- cmake
- CMAKE
- cmake
- 如何编写高质量代码之一:编写高质量的代码的重要性
- vertical-align:middle在表单,img与文字实现垂直居中问题
- 看看MB860等机型的CPU的排名
- 在win32里实现COM
- UIView翻译 (参考)
- CMake漫谈
- 培训效果评估反馈调查/企业问卷调查系统
- log4j.properties配置详解
- 【windows--进程和线程】多线程死锁浅析
- 語音編解碼總結(二)
- createStatement()方法参数解释
- EL表达式循环数组
- linux GDB 调试命令 学习
- Json在线编辑和验证工具