CMake

        使用简单方便,可以跨平台,构建项目编译环境。尤其比直接写Makefile简单(在构建大型工程编译 时,需要写大量的文件依赖关系),可以通过简单的CMake生成负责的Makefile文件。

CMake安装:

ubuntu上直接执行 sudo apt install cmake 安装完成,可以通过cmake -version查看其版本

VsCode中使用插件: 

 

CMake使用介绍:

比如说现在要执行下面一段代码,cmake如果编写:

g++ -o server -g testmuduo.cpp -I/usr/include -L/usr/lib  -lmuduo_net -lmuduo_base -lpthread

 包括编译的的目标文件 testmuduo.cpp

 编译后的名称 server

 编译后的调试方式 -g

 头文件搜索路径  -I/usr/include

 库文件搜索路径  -L/usr/lib

 编译需要连接的库 -lmuduo_net -lmuduo_base -lpthread

cmake_minimum_required (VERSION 3.0) #要求cmake最低的版本号
project(main) #定义当前工程名字

#设置debug模式,如果没有这一行将不能调试设断点
#配置编译选项
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -g)
set(CMAKE_BUILD_TYPE "Debug")

#  配置头文件搜索路径
#  include_directories()
#  配置库文件搜索路径
#  link_directories()

#  设置需要编译的源文件列表
#  set(SRC_LIST testmuduo.cpp)
#  add_executable(server ${SRC_LIST})

#  把 .指定路径下所有的源文件名字放入变量名SRC_LIST里面
#  aux_source_directory(. SRC_LIST)

#  生成可执行文件 
add_executable(server testmuduo.cpp)

#  表示server这个目标程序,需要连接muduo_net muduo_base pthread这三个库
target_link_libraries(server muduo_net muduo_base pthread)

         如果需要编译的有多个源文件,可以都添加到add_executable(main main.cpp test.cpp)列表当中

        但是如果源文件太多,一个个添加到add_executable的源文件列表中,就太麻烦了,此时可以用 aux_source_directory(dir var)来定义源文件列表,使用如下:

aux_source_directory(. SRC_LIST) # 定义变量,存储当前目录下的所有源文件
add_executable(main ${SRC_LIST})

aux_source_directory()也存在弊端,它会把指定目录下的所有源文件都加进来,可能会加入一些我们 不需要的文件,此时我们可以使用set命令去新建变量来存放需要的源文件,如下

set( SRC_LIST
./main.cpp
./test.cpp)
add_executable(main ${SRC_LIST})

生成静态库或动态库如何写?

 # 生成库,动态库是SHARED,静态库是STATIC
add_library (sum SHARED sum.cpp)
add_library (minor SHARED minor.cpp)

项目的工程目录一般有什么?

bin:生成的可执行文件

lab:库文件

include:头文件

src:这是源文件

build:项目编译过程中产生了临时的中间文件

test:测试文件或者说是example示例代码测试文件

third party:依赖的第三方库文件

CMakeLists.TXT

autobuild.sh:linux的shell脚本啊,一键编译

 所以这里我们想把cmake产生中间临时的文件放到build目录下:

把最终可执行文件放到bin目录下:

#  设置可执行文件最终存储的路径
    set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

 可以看到这里我们的可执行文件在bin/目录下 临时中间文件在build中


CMake常用的预定义变量:

PROJECT_NAME : 通过 project() 指定项目名称

PROJECT_SOURCE_DIR : 工程的根目录

PROJECT_BINARY_DIR : 执行 cmake 命令的目录

CMAKE_CURRENT_SOURCE_DIR : 当前 CMakeList.txt 文件所在的目录

CMAKE_CURRENT_BINARY_DIR : 编译目录,可使用 add subdirectory 来修改

EXECUTABLE_OUTPUT_PATH : 二进制可执行文件输出位置

LIBRARY_OUTPUT_PATH : 库文件输出位置

BUILD_SHARED_LIBS : 默认的库编译方式 ( shared 或 static ) ,默认为 static

CMAKE_C_FLAGS : 设置 C 编译选项 CMAKE_CXX_FLAGS : 设置 C++ 编译选项

CMAKE_CXX_FLAGS_DEBUG : 设置编译类型 Debug 时的编译选项

CMAKE_CXX_FLAGS_RELEASE : 设置编译类型 Release 时的编译选项

CMAKE_GENERATOR : 编译器名称

CMAKE_COMMAND : CMake 可执行文件本身的全路径

CMAKE_BUILD_TYPE : 工程编译生成的版本, Debug / Release

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值