CMake/CPack学习小计

本文详细介绍了CMake的使用,从最基础的语法和hello world工程开始,涵盖核心概念如target、generator和command,深入讲解了变量、条件语句、函数、宏等语法,并探讨了如何使用CMake描述C++项目的构建。此外,还详细阐述了cmake命令行的使用和CPack的配置,包括安装、打包和依赖管理,为C++项目的构建和部署提供全面指导。
摘要由CSDN通过智能技术生成

从hello world开始

最基础的使用和语法

cmake的编译过程使用名为CmakeLists.txt的文件进行控制,该文件包含着使用cmake语言描述的项目信息, cmake语言通过一些命令起作用,在cmake执行时,每个命令按照文件中声明的顺序进行执行,命令的形式形如:

command(args …)

cmake的命令名称是大小写不敏感的(从v2.2版本开始,老版本只支持全大写),同时cmake支持一些简单的变量, 例如数字、字符串或字符串列表等等,变量通过${VAR}进行引用,多个参数可以通过set命令存入一个变量中形成列表,例如:

set(FOO A B C)

这个时候FOO变量代表着A、B、C三个变量组合形成的列表,在使用时,下面两种形式是等价的:

command(${FOO}) command(A B C)

假如需要给列表或变量添加双引号,则如下所示:

command(${FOO}) command(“A B C”)

系统的环境变量和注册表项的值也可直接在cmake中使用,如下:

$ENV{VAR} [HKEY_CURRENT_USER\Software\path1\path2;key]

hello world工程的CMakeLists文件

当Hello项目内只有一个hello.c文件时,hello.c文件内容如下:

#include <stdio.h>

int main()
{
   
    printf("hello world\n");
    return 0;
}

则编译所使用的Cmake文件如下:

project (Hello)
add_executable (Hello hello.c)

以上是一个最简单的情况,接下来让我们看一个稍微复杂一点的例子:

cmake_minimum_required(2.6)
project(Hello)

set(HELLO_SRCS hello.c File2.c File3.c)

if (WIN32)
  set(HELLO_SRCS ${HELLO_SRCS} WinSupport.c)
else ()
  set(HELLO_SRCS ${HELLO_SRCS} LinuxSupport.c)
endif()

add_executable(Hello ${HELLO_SRCS})

find_library (TCL_LIBRARY
  NAMES tcl tcl84 tcl83 tcl82 tcl80
  PATHS /usr/lib /usr/local/lib
  )

if(TCL_LIBRARY)
  target_link_library (Hello ${TCL_LIBRARY})
endif ()

cmake核心概念

三大核心概念间的关系

cmake有三个关键概念:target、generator和command,我们

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值