cmake安装使用(详解 )
CMake安装
ubuntu上直接执行 sudo apt install cmake 安装完成,可以通过cmake -version查看其版本
CMake常用命令
#正常命令是下面这样的 一共由6部分组成
#g++ -o 可执行文件/静态库/动态库 编译参数 源文件 头文件 库文件 链接的库
#cmake 其实就是解决这6的部分
(1)生成可执行文件
add_executable(源文件名字 源文件路径/源文件的变量)
(2)编译参数
set(CMAKE_<LANG>_FLAGS ${CMAKE_<LANG>_FLAGS} -g -O2)
在默认配置上加 -g -O2编译参数
(3)源文件添加
第一种方法:set(SRC_LISTS 源文件名字/源文件路径)
第二种方法: aux_source_directory(路径 SRC_LISTS)
将源文件加载到变量里面
(4)配置头文件的搜索路径
include_directories(路径);
(5)配置库文件路径
link_directories(路径)
(6)链接库文件
target_link_directories(程序名 链接的库名字)
(7)加载子目录
add_subdirectory(src)
主要用于大项目构建的时候,有多个CMakeKists
(8)上面的完整代码
#正常命令是下面这样的 一共由6部分组成
#g++ -o 可执行文件/静态库/动态库 编译参数 源文件 头文件 库文件 链接的库
#cmake 其实就是解决这6的部分
##(1)生成可执行文件
add_executable(源文件名字 源文件路径/源文件的变量)##(2)编译参数
set(CMAKE_<LANG>_FLAGS ${CMAKE_<LANG>_FLAGS} -g -O2)
##在默认配置上加 -g -O2编译参数##(3)源文件添加
第一种方法:set(SRC_LISTS 源文件名字/源文件路径)
第二种方法: aux_source_directory(路径 SRC_LISTS)
##将源文件加载到变量里面##(4)配置头文件的搜索路径
include_directories(路径);##(5)配置库文件路径
link_directories(路径)##(6)链接库文件
target_link_directories(程序名 链接的库名字)
(9)其他参考
这个博主cmake命令写得挺好的,可以看看
CMake常用命令 - 嗜血苍狼 - 博客园
标准开发项目文件
bin:存放二进制文件
build:存放cmake的中间文件
src:存放源文件
include:存放头文件
lib:存放库文件
thirdlib:第三方库文件
CMakeLists:cmake文件
autosh.sh:一键编译脚本
READMAD:类似说明文档
CMake模板
这里提供一个模板,可以完成标准的工程开发,在不同工程里面只需要改一些变量名字即可,简单易便。
父文件的
#版本号
cmake_minimum_required(VERSION 3.0)
#项目文件名
project(chat)# 配置编译选项
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -g)# 配置最终的可执行文件输出的路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)# 配置头文件的搜索路径 ${PROJECT_SOURCE_DIR} 工程文件路径
include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${PROJECT_SOURCE_DIR}/include/server)
include_directories(${PROJECT_SOURCE_DIR}/include/server/db)
include_directories(${PROJECT_SOURCE_DIR}/include/server/model)
include_directories(${PROJECT_SOURCE_DIR}/include/server/redis)
include_directories(${PROJECT_SOURCE_DIR}/thirdparty)
link_directories(/usr/lib64/mysql)# 加载子目录
add_subdirectory(src)
src文件下有server和client文件
add_subdirectory(server)
add_subdirectory(client)
server文件下的CMakeLists
aux_source_directory(. SRC_LIST)
aux_source_directory(./db DB_LIST)
aux_source_directory(./model MODEL_LIST)
aux_source_directory(./redis REDIS_LIST)# 指定生成可执行文件
add_executable(ChatServer ${SRC_LIST} ${DB_LIST} ${MODEL_LIST} ${REDIS_LIST})
# 指定可执行文件链接时需要依赖的库文件
target_link_libraries(ChatServer muduo_net muduo_base mysqlclient hiredis pthread)
client下可执行文件
# 定义了一个SRC_LIST变量,包含了该目录下所有的源文件
aux_source_directory(. SRC_LIST)# 指定生成可执行文件
add_executable(ChatClient ${SRC_LIST})
# 指定可执行文件链接时需要依赖的库文件
target_link_libraries(ChatClient pthread)
cmake安装使用(详解 )相关推荐
- cmake find_package路径详解
cmake find_package路径详解 转自:https://zhuanlan.zhihu.com/p/50829542 经常在Linux下面写C++程序,尤其是需要集成各种第三方库的工程,肯定 ...
- 在虚拟机安装MySQL详解
在虚拟机安装MySQL详解 MySQL是一种关系型数据库,原本是瑞典的公司叫MySqlAB公司,后被Oracle收购 DB:database,数据库,里边保存了有组织的规范的数据 DBMS:datab ...
- python3.5.3安装完后什么样子_python3.5安装python3-tk详解
在python3.5下安装好matplotlib后,准备显示一张图片测试一下,但是控制台报错说需要安装python3-tk,我天真的以为直接: sudo apt-get install python3 ...
- Linux redis安装教程,Linux 下redis5.0.0安装教程详解
Linux redis5.0.0安装,教程如下所示: 1.从官网下载,然后传到服务器,tar -zxvf解压 2.进入redis ? 3.安装:make, (1)若提示:: gcc: Command ...
- zabbix安装配置详解(一)
zabbix安装配置详解(一) 一.nginx安装 1.必要软件准备: 为了支持rewrite功能,我们需要安装pcre: #yum install pcre-* 需要ssl的支持,如果不需要ssl支 ...
- 电脑安装python步骤-python3.8下载及安装步骤详解
1.操作系统:Windows7 64bit executable installer 2.安装步骤: 双击安装文件python-3.8.0-amd64.exe 勾选下方"Add Python ...
- python详细安装教程3.8-python3.8下载及安装步骤详解
1.操作系统:Windows7 64bit Python版本:3.8下载地址:https://www.python.org/downloads/release/python-380/,选择下方的Win ...
- centos6 安装 mantisbt-1.2.8 —— (1) VMware Workstation 12 Pro 虚拟机安装步骤详解(window 10 系统)
对于目前主流之一的VMware 虚拟机而言,一直是各位小伙伴的首选,而VMware 12 Pro 是截止目前最新的VMware Workstation 版本:偶在这里特地给刚刚入坑的小伙伴详细介绍介绍 ...
- linux PHP 编译安装参数详解
linux PHP 编译安装参数详解 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...
- lvs keepalived 安装配置详解【转】
lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...
最新文章
- Python基础15-函数闭包与装饰器
- .NET常见线程简介
- 游戏外挂技术:编程实现内存检索(检索内存中指定数据)
- mysqls压力测试怎么用_用 Swagger 测试接口,怎么在请求头中携带 Token?
- html5语义化 兼容,HTML5语义化标签,兼容性问题
- RocketMQ 端云一体化设计与实践
- Bokeh 风格属性设置
- Oracle如何根据SQL_TEXT生成SQL_ID
- 三维扫描仪[3]——标定·理论
- php laravel 开发工具,Laravel 文档工具
- 一次macbook安装iftop失败的经历及解决方式
- Ubuntu中文件颜色的含义
- 利用一般分配律降低时间复杂度
- CTFSHOW WEB入门
- Android水果超市的登录界面,【水果识别】自助水果超市matlab源码含 GUI
- 【渝粤题库】陕西师范大学151214 纳税筹划 作业(专升本)
- Everest——Linux发行版本
- 华三交换机ping不通用户但用户_用H3C模拟器做交换机实验,但是终端总是PING不通交换机,求各位高手帮忙!...
- 20 考研英语题源外刊精讲赏析 1~10 期外刊原文+翻译+点评
- 使用teamviewer搭建内网服务器。
热门文章
- ROS系统学习9---节点间的内存共享(中级篇)---图像收发
- NAS远程共享存储NFS
- 字节跳动《算法中文手册》高清版.pdf
- .Net Framework3.5 的 NetFx3.cab 资源
- 铁路售票系统_高铁铁路运营客票乘务,自动售检票务实训的诞生背景
- Maple公式推导教程
- 二级c语言分数,C语言二级考试分数构成与攻略,高分必备
- Autorun.inf病毒和qhbpriAppInit_DLLs专杀
- 计算机刷bios版本,技嘉bios升级工具(@BIOS)
- PSP3000破解教程