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安装使用(详解 )相关推荐

  1. cmake find_package路径详解

    cmake find_package路径详解 转自:https://zhuanlan.zhihu.com/p/50829542 经常在Linux下面写C++程序,尤其是需要集成各种第三方库的工程,肯定 ...

  2. 在虚拟机安装MySQL详解

    在虚拟机安装MySQL详解 MySQL是一种关系型数据库,原本是瑞典的公司叫MySqlAB公司,后被Oracle收购 DB:database,数据库,里边保存了有组织的规范的数据 DBMS:datab ...

  3. python3.5.3安装完后什么样子_python3.5安装python3-tk详解

    在python3.5下安装好matplotlib后,准备显示一张图片测试一下,但是控制台报错说需要安装python3-tk,我天真的以为直接: sudo apt-get install python3 ...

  4. Linux redis安装教程,Linux 下redis5.0.0安装教程详解

    Linux redis5.0.0安装,教程如下所示: 1.从官网下载,然后传到服务器,tar -zxvf解压 2.进入redis ? 3.安装:make, (1)若提示:: gcc: Command ...

  5. zabbix安装配置详解(一)

    zabbix安装配置详解(一) 一.nginx安装 1.必要软件准备: 为了支持rewrite功能,我们需要安装pcre: #yum install pcre-* 需要ssl的支持,如果不需要ssl支 ...

  6. 电脑安装python步骤-python3.8下载及安装步骤详解

    1.操作系统:Windows7 64bit executable installer 2.安装步骤: 双击安装文件python-3.8.0-amd64.exe 勾选下方"Add Python ...

  7. python详细安装教程3.8-python3.8下载及安装步骤详解

    1.操作系统:Windows7 64bit Python版本:3.8下载地址:https://www.python.org/downloads/release/python-380/,选择下方的Win ...

  8. centos6 安装 mantisbt-1.2.8 —— (1) VMware Workstation 12 Pro 虚拟机安装步骤详解(window 10 系统)

    对于目前主流之一的VMware 虚拟机而言,一直是各位小伙伴的首选,而VMware 12 Pro 是截止目前最新的VMware Workstation 版本:偶在这里特地给刚刚入坑的小伙伴详细介绍介绍 ...

  9. linux PHP 编译安装参数详解

    linux PHP 编译安装参数详解 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...

  10. lvs keepalived 安装配置详解【转】

    lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...

最新文章

  1. Python基础15-函数闭包与装饰器
  2. .NET常见线程简介
  3. 游戏外挂技术:编程实现内存检索(检索内存中指定数据)
  4. mysqls压力测试怎么用_用 Swagger 测试接口,怎么在请求头中携带 Token?
  5. html5语义化 兼容,HTML5语义化标签,兼容性问题
  6. RocketMQ 端云一体化设计与实践
  7. Bokeh 风格属性设置
  8. Oracle如何根据SQL_TEXT生成SQL_ID
  9. 三维扫描仪[3]——标定·理论
  10. php laravel 开发工具,Laravel 文档工具
  11. 一次macbook安装iftop失败的经历及解决方式
  12. Ubuntu中文件颜色的含义
  13. 利用一般分配律降低时间复杂度
  14. CTFSHOW WEB入门
  15. Android水果超市的登录界面,【水果识别】自助水果超市matlab源码含 GUI
  16. 【渝粤题库】陕西师范大学151214 纳税筹划 作业(专升本)
  17. Everest——Linux发行版本
  18. 华三交换机ping不通用户但用户_用H3C模拟器做交换机实验,但是终端总是PING不通交换机,求各位高手帮忙!...
  19. 20 考研英语题源外刊精讲赏析 1~10 期外刊原文+翻译+点评
  20. 使用teamviewer搭建内网服务器。

热门文章

  1. ROS系统学习9---节点间的内存共享(中级篇)---图像收发
  2. NAS远程共享存储NFS
  3. 字节跳动《算法中文手册》高清版.pdf
  4. .Net Framework3.5 的 NetFx3.cab 资源
  5. 铁路售票系统_高铁铁路运营客票乘务,自动售检票务实训的诞生背景
  6. Maple公式推导教程
  7. 二级c语言分数,C语言二级考试分数构成与攻略,高分必备
  8. Autorun.inf病毒和qhbpriAppInit_DLLs专杀
  9. 计算机刷bios版本,技嘉bios升级工具(@BIOS)
  10. PSP3000破解教程