cmake指导

CMakeList.txt cmake配置文件 构建项目的一般流程梳理

1、编译环境参数声明

  1. cmake版本要求声明:cmake_minimum_required(VERSION 3.6.0)

  2. 工程项目名称:project(communication)

  3. 系统平台类型声明:其中 C M A K E S Y S T E M N A M E 一般是通过启动编译的 b a t 脚本中的 c m a k e 构建命令设置进来的。 i f ( {CMAKE_SYSTEM_NAME}一般是通过启动编译的bat脚本中的cmake构建命令设置进来的。 if( CMAKESYSTEMNAME一般是通过启动编译的bat脚本中的cmake构建命令设置进来的。if({CMAKE_SYSTEM_NAME} MATCHES “Windows”)
    message(STATUS “target platform: Windows”)
    set(COMMUNICATION_OS_WINDOWS ON)
    endif()

  4. 其他参数
    对C++版本的要求:set(CMAKE_CXX_STANDARD_REQUIRED ON)
    C++版本:set(CMAKE_CXX_STANDARD 17)
    编译类型:set(CMAKE_BUILD_TYPE “Release”)

2、代码引用

一般会将整个项目的代码按照模块逐个添加到cmake配置文件中,每个模块内分为头文件路径引用和源码文件引用。
set(communication_include_dirs
${PROJECT_SOURCE_DIR}/src/native/communication/src)
set(communication_source_files
${PROJECT_SOURCE_DIR}/src/native/communication/src/communicator.cpp)

3、protobug引用

4、输出产物声明

  1. 声明目标产物对应的源码文件范围:
    set(target_source_files
    ${communication_source_files}
    ${business_source_files})

  2. 声明目标产物类型和对应的源码
    add_library(
    communication // 输出目标产物的名称
    SHARED // SHARED 表示动态库,STATIC 表示静态库
    ${target_source_files}) // 目标产物对应的源码范围

  3. 声明目标产物对应的头文件范围
    target_include_directories(
    communication // 目标产物名称
    PUBLIC // 什么含义???
    ${PROJECT_SOURCE_DIR}/src/native/business/include
    ${PROJECT_SOURCE_DIR}/src/native/magiclink/include
    PRIVATE // 什么含义???
    ${communication_include_dirs}
    ${dm_adapter_include_dirs})

5、编译自定义参数

set(compile_definitions
-D_UNICODE // 什么含义???
BETA_BUILD
COMMUNICATION_EXPORT
DEVICE_MANAGER_EXPORT
BUSINESS_CONFIG_EXPORT)

target_compile_definitions(
communication
PRIVATE // 什么含义???
COMMUNICATION_API=
DEVICE_MANAGER_ADAPTER=
BUSINESS_CONFIG=
${compile_definitions})

6、声明链接库参数

  1. 添加库
    find_library(log-lib log) // 引用三方log库,并重命名为log-lib
    add_library(
    softbus
    SHARED
    IMPORTED)
    set_target_properties(
    softbus
    PROPERTIES
    IMPORTED_LOCATION // 定义三方动态库的导入源地址
    T H I R D P A R T Y S O U R C E D I R / v e n d o r / s o f t b u s / l i b / {THIRD_PARTY_SOURCE_DIR}/vendor/softbus/lib/ THIRDPARTYSOURCEDIR/vendor/softbus/lib/{ANDROID_ABI}/libsoftbus.so)
  2. 声明链接库范围
    set(link_libraries
    ${log-lib}
    softbus
    libprotobuf
    proto_file)
  3. 将目标产物与三方库链接
    target_link_libraries(
    communication
    PUBLIC // 什么含义???
    ${link_libraries})

cmake 及 add_subdirectory命令介绍

CMake是一种跨平台编译工具,CMake主要是编写CMakeLists.txt文件,通过cmake命令将CMakeLists.txt文件转化为make所需的Makefile文件,再用make命令编译源代码生成可执行程序或库文件。

CMake详解
cmake编译选项与常用指令
【CMake】基本指令
CMAKE学习笔记
现代CMake高级教程

Cmake命令之add_subdirectory介绍

cmake生成器和编译器

cmake生成器介绍1:Cmake的生成器Generator
cmake生成器介绍2:CMake - 生成器(Generators)
生成器介绍、种类、生成器和编译器关系:CMake生成器

如何查看cmake命令行参数说明:cmake --help
cmake -S -B参数:cmake -S -B 参数
cmake -G参数:cmake的-G 参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值