CMake学习、工程实践

CMake是什么

        CMake 是一个跨平台的项目构建工具,可以帮助生成MakeFile。

CMakeLists.txt指令和使用

        1、使用 # 添加行注释;

        2、cmake_minimum_required 指定最低CMake版本;

        3、add_executable生成可执行程序名称;

# 这是一个 CMakeLists.txt 文件
cmake_minimum_required(VERSION 3.0)
project(项目名称)
add_executable(可执行程序名 源文件名称)

        4、使用set定义字符串变量;${变量名}使用这个变量;set可以指定c++标准,C++标准对应有一宏叫做DCMAKE_CXX_STANDARD;指定可执行程序输出的路径,也对应一个宏,叫做EXECUTABLE_OUTPUT_PATH

# SET 指令的语法是:
# [] 中的参数为可选项, 如不需要可以不写
# 1、set用法1
SET(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])
add_executable(app  ${VAR})

# 2、set用法2 增加-std=c++11
set(CMAKE_CXX_STANDARD 11)

# 3、set用法3 指定可执行程序的生成目录
set(HOME 你的路径)
set(EXECUTABLE_OUTPUT_PATH ${HOME}/bin)

        5、搜索文件   可以使用aux_source_directory命令或者file命令。 

# 方式1 aux_source_directory
# CMAKE_CURRENT_SOURCE_DIR是当前目录宏
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src SRC)


#方式2 file
#GLOB: 将指定目录下搜索到的满足条件的所有文件名生成一个列表,并将其存储到变量中。
#GLOB_RECURSE:递归搜索指定目录,将搜索到的满足条件的文件名生成一个列表,并将其存储到变量中。
file(GLOB MAIN_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
file(GLOB MAIN_HEAD ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h)

        6、包含头文件路径使用include_directories命令;

include_directories(headpath)

        7、制作动态库或静态库

#生成静态库
add_library(库名称 STATIC 源文件1 [源文件2] ...) 

#生成动态库
add_library(库名称 SHARED 源文件1 [源文件2] ...) 

# 设置动态库/静态库生成路径
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)

# 包含静态库路径
link_directories(${PROJECT_SOURCE_DIR}/lib)


# 链接动态库
# 在cmake中指定要链接的动态库的时候,应该将命令写到生成了可执行文件之后
# 需要指定动态库的路径
link_directories(${PROJECT_SOURCE_DIR}/lib)
target_link_libraries(
    <target> 
    <PRIVATE|PUBLIC|INTERFACE> <item>... 
    [<PRIVATE|PUBLIC|INTERFACE> <item>...]...)

        8、输出日志

# 输出一般日志信息
message(STATUS "source path: ${PROJECT_SOURCE_DIR}")
# 输出警告信息
message(WARNING "source path: ${PROJECT_SOURCE_DIR}")
# 输出错误信息
message(FATAL_ERROR "source path: ${PROJECT_SOURCE_DIR}")

        9、变量操作

        字符串拼接可以使用set命令也可以使用list命令;

set(变量名1 ${变量名1} ${变量名2} ...)

# 追加(拼接)
list(APPEND SRC_1 ${SRC_1} ${SRC_2} ${TEMP})

# 移除 main.cpp
list(REMOVE_ITEM SRC_1 ${PROJECT_SOURCE_DIR}/main.cpp)

        10、添加宏定义;

add_definitions(-D宏名称)

        11、CMake常见宏

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值