CMakeLists.txt中常见的几种函数说明(一)

使用cmake构建C++工程的时候,需要配置好cmake文件,该文件的名字严格区分大小写,一定是CMakeLists.txt。然后,需要在txt文件写一些指令,cmake才正确可以执行。在一个cmake文件中常用到的几个函数在下面被介绍:

1. 版本号限制语句--cmake_minimum_required()

cmake_minimum_required(VERSION <min>[...<max>] [FATAL_ERROR])

作用:该命令指明了对cmake的最低(高)版本的要求。

参数说明:VERSION:指明后面的参数为camke的版本号,后面跟着cmake的版本。

例如:下面的例子指定了cmake的最低版本要求。

cmake_minimum_required(VERSION 3.10)

下面的例子指定了cmake的最低版本和最高版本的要求。

cmake_minimum_required (VERSION 3.10...3.15)

通常一些软件在更新的时候,都是兼容之前的版本的,所以在CMakeLists.txt的文件夹中对于版本的要求只要说明最低版本要求即可。

2 指定工程名--project()

project(<PROJECT-NAME>
        [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
        [DESCRIPTION <project-description-string>]
        [HOMEPAGE_URL <url-string>]
        [LANGUAGES <language-name>...])

作用:用来指定cmake工程的名字,此外还可以指定版本号,项目描述,主页链接以及编译所使用的语言。

参数说明:

<PROJECT-NAME>:必选,用来设置工程的名字,设置后,会把设置的值存在。CMAKE_PROJECT_NAME变量中。

[VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]:可选,和上面的版本号限制语句里面的一样。

[DESCRIPTION <project-description-string>]:可选,项目描述。

[HOMEPAGE_URL <url-string>]:可选,工程主页url。

[LANGUAGES <language-name>...]):可选,工程使用的语言。

#设置项目、项目名称、版本、描述、语言
project(
     MyProject_name 
     VERSION 3.10
     DESCRIPTION  "简单的项目描述"
     LANGUAGES CXX 
)

3 生成目标可执行文件--add_executable()

add_executable(<name> [WIN32] [MACOSX_BUNDLE]
                [EXCLUDE_FROM_ALL]
                [source1] [source2 ...])

作用:使用指定的源文件生成目标可执行文件,即有source列出的源文件构建成名字为name的目标可执行文件。

参数说明:

<name> [WIN32] [MACOSX_BUNDLE]:必选,生成目标可执行文件的名字

[source1] [source2 ...]:必须,构建需要的.cpp源文件

add_executable(myproject_name main.cpp)

4 为指定的目标需要包含的头文件目录--target_include_directories()

target_include_directories(<target> [SYSTEM] [AFTER|BEFORE]
   <INTERFACE|PUBLIC|PRIVATE> [items1...]
   [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])

作用:为目标添加头文件目录,将指定目录添加到编译器的头文件搜索路径之下,指定的目录被解释成当前源码路径的相对路径。

参数说明:<target>必须是由add_executable()或add_library()之类的命令创建的目标对象的名字。

<INTERFACE|PUBLIC|PRIVATE>:必选,用来指定target的中iuclude的属性。

在下面的例子中,为了找到include中的文件,返回本文件夹的上一个文件夹,进入other_dir文件寻找。

target_include_directories(myproject_name PUBLIC "../other_dir")

5 为目标添加库文件目录--target_link_directories()

target_link_directories(myproject_name PUBLIC "../account_dir/build") 

作用:为构建的目标添加库文件目录,C++中库通常指的是动态链接库或者静态链接库。将前面建立好的库,添加到目标文件中。

6 为目标添加库--target_link_libraries()

target_link_libraries(myproject_name Account)

作用:将Account库添加到myprojecct_name文件中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值