美文网首页
CMake笔记

CMake笔记

作者: delta1037 | 来源:发表于2019-05-20 20:34 被阅读0次

CMake

它首先允许开发者编写一种平台无关的 CMakeList.txt 文件来定制整个编译流程,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件

linux平台使用cmake流程

  1. 编写 CMake 配置文件 CMakeLists.txt 。
  2. 执行命令 cmake CMakeListPath 生成 Makefile
  3. 使用 make 命令进行编译。make使用

编写CMakeList.txt文件

基本版

#CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)
#项目信息
project (project_name)
#指定生成目标
add_executable(target_name main.c)
#CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)
#项目信息
project (project_name)
# 使用变量
set(SOURCE_FILES file1.c file2.c main.c)
set(SOURCE_FILES file1.c file2.c main.c [apend ...]) # 追加方式添加
#指定生成目标
add_executable(target_name ${SOURCE_FILES})

添加源文件目录

# 添加源文件目录
aux_source_directory(srcPath DIR_SRCS)
# 指定生成目标
add_executable(target_name ${DIR_SRCS})

添加头文件目录

# 包含头文件目录
include_directories(includeFilePath)

添加子目录

子目录中也有有一个CMakeList.txt,子目录下生成一个链接库

# 查找当前目录源文件,将名称
aux_source_directory(srcPath DIR_SRCS)

# 生成链接库
add_library(library_name ${DIR_SRCS})

在主函数中添加链接库

add_excutable(target_name ${SRCS})
# 在指定生成目标之后添加链接库
target_link_library(target_name ${library_name})

添加链接库

link_libraries(library_name1 library_name2) # 所有编译目标都链接的库
link_directories(DLLPath) # 指定动态链接库的搜索路径
target_link_libraries(target_name ${BOOST_LIBRARIES}) # 添加链接库
# 在指定目录中搜索一个库,并且包含在变量中
find_library(MY_LIB library_name1 libraryPath) # 查找并添加动态库(添加一部分)

其它

设置编译参数
add_definitions("-Wall -g")
添加编译依赖
add_dependencies()
设置目标属性
set_target_properties()
# eg:
set_target_properties(${project_name} PROPERTIES
        SOVERSION 0.0.1
        PUBLIC_HEADER "include/gtstack.h;include/gttypes.h"
    )
设置版本号
set(VERSION_MAJOR 1) # 最大的版本编号
set(VERSION_MINOR 0) # 其次于major的版本号
set(VERSION_PATCH 0) # 其次于minor的版本号
set(VERSION_TWEAK 0) # 其次于patch的版本号

# 版本号:MAJOR.MINOR.PATCH.TWEAK (semver语义化版本号的规则)
输出信息
message([SEND_ERROR | STATUS | FATAL_ERROR] “message to display”)
语法
LESS,GREATER,EQUAL # 数字比较
STRLESS、STRGREATER、STREQUAL # 字符串比较
if(CONDITION1)
...
elseif(CONDITION2)
...
else(CONDITION3)
...
endif
# 1
foreach(loop_var arg1 arg2...)
    ...
endforeach(loop_var)

# 2
foreach(loop_var RANGE total)
    ...
endforeach(loop_var)
# 3
foreach(loop_var RANGE start stop [step])
    ...
endforeach(loop_var)
# 4
foreach(loop_var IN [LISTS [list1 [...]]] [ITEMS [item1 [...]]])
    ...
endforeach(loop_var)
while(CONDITION)
    ...
endwhile(CONDITION)
# Logic operation
if(FALSE AND (FALSE OR TRUE))
    ...
endif()

相关文章

  • cmake学习笔记6-catkin的CmakeList.txt讲

    引用cmake学习笔记-cmakelist.txt创建项目示例cmake的介绍和使用 Cmake实践推荐cmake...

  • CMake 编写笔记

    本文章仅作为个人笔记 CMake官网 CMakeLists.txt 个人理解$ 变量使用,例:${CMAKE_CU...

  • CMakeList文件详解

    本篇为《网易云课堂》学习笔记 基础语法 常用命令 cmake_miniumum_required cmake(VE...

  • cmake 学习1

    cmake 学习笔记 最近接触到一些工程上的代码,都是用cmake来编译的,每次看着CMakeLists.txt ...

  • cmake笔记

    cmake是一款非常方便的工程构建工具。

  • CMake笔记

    CMake 它首先允许开发者编写一种平台无关的 CMakeList.txt 文件来定制整个编译流程,然后再根据目标...

  • CMake基础知识

    CMake 学习笔记系列 https://www.cnblogs.com/linuxAndMcu/p/106553...

  • CMake学习笔记(二)——CMake语法

    搬运自本人 CSDN 博客:https://blog.csdn.net/ajianyingxiaoqinghan/...

  • cmake 学习笔记

    cmake_minimum_required:指定运行此配置文件所需的 CMake 的最低版本; add_exec...

  • CMake 命令笔记

    CMake 全称“cross platform make”,是开源、跨平台的自动化构建系统。CMake 由 Kit...

网友评论

      本文标题:CMake笔记

      本文链接:https://www.haomeiwen.com/subject/lbvlzqtx.html