暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

程序员自我修养之CMake语法 1

arige 2021-09-29
1301

1、cmake_minimum_required

含义: CMake最低版本号要求

cmake_minimum_required(VERSION 3.10)  最低版本是3.10

2、project

含义:项目名称

project(simple  VERSION  1.0   LANGUAGES CXX C)

项目名称 : simple

版本号 : 1.0

支持语言 : CXX(C++)、C

3、set

含义:某一个变量赋值

set(testVariables OFF)

给testVariables赋值为OFF

4、add_subdirectory

含义:将子目录下的CMakeLists.txt文件(整个子目录)整体编译

├── CMakeLists.txt    #父目录的CMakeList.txt

├── main.cpp    #源文件,包含main函数

├── sub    #子目录

├── test

└── CMakeLists.txt    #子目录的CMakeLists.txt

└── test.h                  #子目录头文件

└── test.cpp              #子目录源文件

add_subdirectory(sub/test)

将sub/test目录下的CMakeLists.txt文件与主工程一起编译

5、include

含义:导入文件

include(text.cmake)

导入编写的text.cmake文件

.cmake : 将一些通用的函数功能封装到到一个指定的文件中,可以达到代码复用的目的

6、add_library

含义: 将指定的源文件生成链接文件,然后添加到工程中

text_project( 项目名称)

├── CMakeLists.txt    #父目录的CMakeList.txt

├── main.cpp    #源文件,包含main函数

├── sub    #子目录

├── test

└── CMakeLists.txt    #子目录的CMakeLists.txt

└── test.h                  #子目录头文件

└── test.cpp              #子目录源文件

set(LINK_SOURCE   sub/test/test.h sub/test/test.cpp .........)

给LINK_SOURCE 赋值为sub/test 目录下的所有的.h和.cpp文件

add_library(text_project  STATIC LINK_SOURCE)

将sub/test/所有文件编译为.a(静态库)添加到text_project项目中

add_library(text_project SHARED LINK_SOURCE)

将sub/test/所有文件编译为.so(动态库)添加到text_project项目中

7、target_link_libraries

含义:将目标文件与库文件进行链接

target_link_libraries( lib1 lib2 lib3)

链接关系lib1->lib2->lib3

target_link_libraries( lib1 public libs2)

PRIVATE, PUBLIC, INTERFACE 参数讲解:

在public后面的库会被Link到target中,并且里面的符号也会被导出,提供给第三方使用。

在private后面的库仅被link到你的target中,并且终结掉,第三方不能感知你调什么库

在interface后面引入的库不会被链接到你的target中,只会导出符号

友情链接 : https://blog.csdn.net/znsoft/article/details/119035578

8、target_include_directories

含义:  让目标目录添加此目录下的列表

text_project( 项目名称)

├── CMakeLists.txt    #父目录的CMakeList.txt

├── main.cpp    #源文件,包含main函数

├── sub    #子目录

├── test

└── CMakeLists.txt    #子目录的CMakeLists.txt

└── test.h                  #子目录头文件

└── test.cpp              #子目录源文件

target_include_directories(text_project  sub/test)

text_project工程添加sub/test目录下列表

9、find_library

含义:查找库,找到了就使用缓存,找不到下次还会接着搜索

find_library(log_util  log)

把log的库缓存在log_util

10、set_target_properties

含义:给目标的设置多个属性

set_target_properties(demo   KEY  17   SWITCH  ON)

给demo设置KEY=17和SWITCH = ON 属性

11、add_executable

含义:将源文件转变为可执行文件

add_executable(demo  demo.cpp)

把demo.cpp 转变为可执行文件并添加到demo

参考文档:https://cmake.org/cmake/help/v3.0/manual/cmake-commands.7.html


文章转载自arige,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论