43 编译原理及cmake使用手册学习

摘要:
0简介需要通过cmake编译和使用大量开源库,以了解cmake和CMakeLists的基本指令txt的编写方法非常重要,其基础是了解编译原理。此外,为了调试cmake编译的代码,您需要知道如何编写CMakeList.txt。https://blog.csdn.net/wzzfeitian/article/details/40963457/#cmake示例和摘要https://cmake.org/cmake/help/v3.3/command/target_link_libraries.html#cmakeofficialdocumentation#cmake相关教程https://tuannguyen68.gitbooks.io/learning-cmake-a-beginner-s-guide/content/chap1/chap1.html1cmake编译原则:cmake通过指定源文件、外部include文件、静态链接库文件、动态链接库文件和生成文件的路径,有序地组织整个程序,最终达到生成可执行程序的目的。2cmakecommands(常用)cmake中的指令不区分大小写。
0 引言

大量开源库需要通过cmake编译后使用,了解cmake的基本指令以及CMakeLists.txt的写法非常重要,其基础是了解编译原理。另外,为了对cmake编译的代码进行调试,需要了解CMakeList.txt的写法。本文将对这些关键问题进行探讨,并记录一些关键点。

参考了如下链接。

https://blog.csdn.net/wzzfeitian/article/details/40963457/  # cmake使用示例与整理总结

https://cmake.org/cmake/help/v3.3/command/target_link_libraries.html  #  cmake official documentation

# cmake相关的教程
https://tuannguyen68.gitbooks.io/learning-cmake-a-beginner-s-guide/content/chap1/chap1.html
1 cmake编译原理

cmake通过指定源文件、外部include文件、 静态链接库(.a/.lib)文件、动态链接库(.so/.dll)文件的路径,以及生成文件的路径,将整个程序有序地组织起来,最终达到生成可执行程序的目的。

2 cmake commands(常用)
1)cmake中的指令对大小写不敏感。
(2)PROJECT(project):工程名,一般采用最上层文件夹名 
(3)ADD_SUBDIRECTORY(add_subdirectory):附加目录名,一般为src的目录,在文件比较多的时候采用
(4)LINK_DIRECTORIES (link_directories):静态链接库目录,供linker(链接器)使用
(5)ADD_EXECUTABLE (add_executable):可执行文件
(6)INCLUDE_DIRECTORIES(include_directories): .h头文件
(7)TARGET_LINK_LIBRARIES(target_link_libraries): .so文件,格式是 target_link_libraries(可执行文件名  链接库地址及文件)
  写法为:以libboost_system.so.1.58.o 为例 “-lboost_system”
3 cmake预定义变量
$PROJECT_SOURCE_DIR$ : 工程的根目录
$PROJECT_BINARY_DIR$ : 运行cmake命令的目录,通常是${PROJECT_SOURCE_DIR}/build
4 cmake的CMakeLists.txt语法

常用变量的意义解释都有,链接如下。

https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/Useful-Variables
 5 cmake参数运用

(1)区分debug和release的方法: 

点击Add Entry添加   Name:    CMAKE_DEBUG_POSTFIX 、Type:    STRING 、Value:-gd、Description:空

免责声明:文章转载自《43 编译原理及cmake使用手册学习》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Mysql源码学习——词法分析MYSQLlex关于Delphi XE2的FMX的一点点研究之消息篇下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

docker搭建confluence

一、 说明1.1 素材 本文采用素材如下:Docker镜像 Github链接(https://github.com/cptactionhank)破解工具 Gitee链接(https://gitee.com/pengzhile/atlassian-agent) (https://zhile.io/2018/12/20/atlassian-license-cr...

Bash 破壳漏洞Shellshock (CVE-2014-6271)复现分析

漏洞简介 GNU Bash 4.3及之前版本在评估某些构造的环境变量时存在安全漏洞,向环境变量值内的函数定义后添加多余的字符串会触发此漏洞,攻击者可利用此漏洞改变或绕过环境限制,以执行Shell命令。某些服务和应用允许未经身份验证的远程攻击者提供环境变量以利用此漏洞。此漏洞源于在调用Bash Shell之前可以用构造的值创建环境变量。这些变量可以包含代码,...

Gitlab--安装及汉化

简介 gitlab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git 项目仓库,可通过Web界面迚行访问公开的戒者私人项目。Ruby on Rails 是一个可以使你开发、部署、维护 web 应用程序变得简单的框架。GitLab 拥有与Github 类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常...

74款安卓和IOS app源码地址

知乎专栏App https://github.com/bxbxbai/ZhuanLan WeChat高仿微信 项目地址: https://github.com/motianhuo/wechat GankMeizhi https://github.com/xingrz/GankMeizhi Meizhi https://github.com/drakeet/...

laravel架构

1、Laravel 5.1 中的异常处理器和HTTP异常处理实例教程 http://laravelacademy.org/post/1867.html 2、laravel 集成sentry,sentry通知用slack https://api.slack.com/incoming-webhooks#getting-started 3、Laravel 模型事...

sql自动化检查和分析工具 :soar和soar-web 安装和使用体验

为了研究一下sql自动化检查和分析工具,是否有网上介绍的好用,我在本地进行soar 和 soar-web的安装和使用。 初步的实验结果,总结如下: 1. 安装相对来说较为麻烦,特别是soar-web的依赖包安装,涉及到python pip相关组件的下载安装。 2. 启动soar-web会遇到一些奇怪问题,提示 “ImportError: No module...