CMakeLists.txt编写规则

本文介绍了CMake的基本语法,包括指令的使用方法,如cmake_minimum_required、project、set、include_directories等。同时讲解了如何生成库文件、可执行文件,以及添加编译选项和链接库。此外,还提到了CMAKE_BUILD_TYPE用于设置编译类型,以及外部构建的推荐方式。

一、基本语法

语法格式:指令(参数1 参数2...)

1)参数间用空格或分号隔开

2)指令大小写无关,参数和变量大小写相关

3)变量用${}方式取值,但在if语句中直接用变量名

二、重要指令

1.cmake_minimum_required - 指定CMake最小版本要求

        语法: cmake_minimum_required(VERSION VersionNumber)

例:

#CMake最小版本要求为2.8.3

cmake_minimun_required(VERSION 2.8.3)

2.project - 定义工程名称,并可指定工程支持的语言

        语法:project(projectname [CXX] [C] [Java]) 

3.set - 定义变量

        语法:set(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])

例:

#定义SRC变量,其值为hello.cpp bye.cpp

set(SRC hello.cpp bye.cpp)

4.include_directories - 添加多个指定的头文件搜索路径 --> 相当于gcc的-I选项

        语法:include_directories(dir1 dir2...)

5.link_directories - 添加多个指定的库文件搜索路径 --> 相当于gcc的-L选项

        语法:link_directories(dir1 dir2...)

6.add_library - 生成库文件

        语法:add_library(libname [SHARED|STATIC|MODULE] source1 source2...)

例:

#通过SRC变量生成libsort.so动态库

add_library(sort SHARED ${SRC})

7.add_compile_options - 添加编译选项

        语法:add_compile_options(<option>...)

例:

#添加编译选项 -g -O2 

add_compile_options(-g -O2)

8.add_executable - 生成可执行文件

        语法:add_executable(exename src1 src2...)

例:

#编译main.cpp func.cpp生成test

add_executable(test main.cpp func.cpp)

9.target_link_libraries - 为target添加需要链接的库 --> 相当于gcc的-l选项

例:

#将libsort.a(so)链接到可执行文件test

target_link_libraries(test sort)

 注意:添加库之前target必须已经生成,即add_executable(test)必须在target_link_libraries(test)前面.

10.add_subdirectory - 向当前工程添加存放源文件的子目录,并可指定二进制文件存放的位置

        语法:add_subdirectory(src_dir [binary_dir] [EXCLUDE_FROM_ALL])

#添加src子目录,src中需有一个CMakeLists.txt

add_subdirectory(src)

11.aux_source_directory - 发现一个目录下所有源文件并将列表存储在一个变量中

        语法:aux_source_directory(dir VARIABLE)

#定义SRC变量,其值为当前目录下所有源文件

aux_source_directory(. SRC) 

三、常用变量

1.CMAKE_C_FLAGS 相当于gcc

2.CMAKE_CXX_FLAGS 相当于g++

#在上述变量中追加编译选项

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O2"}

3.CMAKE_BUILD_TYPE 编译类型

#设定编译类型为Debug或Release

set(CMAKE_BUILD_TYPE Debug)

 set(CMAKE_BUILD_TYPE Release)

四、构建方式

总体编译规则的CMakeLists放在项目顶层文件夹,cmake的方式有两种:

1.内部构建:不推荐

直接在顶层文件夹执行cmake .这样构建会在顶层文件夹产生大量中间文件,使文件夹杂乱无章.

2.外部构建:推荐

#在顶层目录创建build文件夹并进入

mkdir build && cd build

#编译上级目录的CMakeLists.txt

cmake ..

#执行make

make

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值