CMake学习笔记

0.视频连接

以下内容来自:https://www.bilibili.com/video/BV1hz4y1H7YA?p=2&vd_source=2f0e9c99e56b465b4db58b469550df17

1.最简单的CMake项目

①设置编译该CMakeLists.txt最低需要的CMake版本
cmake_minimum_required(VERSION 3.10)

②设置项目名称
个人理解:该名称应该只起展示作用(学到后面发现有错再回来改)
porject(first_project)

③指定使用哪些文件来生成可执行程序
格式:add_executable(可执行程序名称 要用到的文件列表)
注:生成可执行文件的名称由这里的“可执行程序名称”决定,不是项目的名称
add_executable(Tutorial tutorial.cxx func.cxx)

④生成Makefile文件的命令
[cmake path],path为CMakeLists.txt所在路径
一般会在CMakeLists.txt的同级目录下创建一个build目录
然后执行:
(1)cd build
(2)cmake ..

⑤使用生成的Makefile来编译源码
[cmake --build path],path为Makefile所在路径。该命令全平台通用
cmake -- build .

2.指定C++标准

①设置c++标准
注:设置的标准只能为可选值,可以在CMake官网查看,https://cmake.org/cmake/help/latest/prop_tgt/CXX_STANDARD.html#prop_tgt:CXX_STANDARD
set(CMAKE_CXX_STANDARD 14)

②表明是否要强行执行已设置的标准
注:如果为True但编译器不支持该标准会报错;否则向下找编译器支持的标准,如:14->11->98
set(CMAKE_CXX_STANDARD_REQUIRED True)

3.CMakeLists.txt与C++文件间的数据传递

主要目的:如何在C++源文件中访问CMakeLists.txt中定义的变量
这集没看懂,目前我使用的项目保存(类似视频中的版本号)变量都使用了配置文件,也挺方便。以后需要再多看几遍

①打印字符串或变量
格式:message([<mode>] "message text" ...)
注:默认mode为STATUS,可以在CMake官网查看其他可选项,https://cmake.org/cmake/help/latest/command/message.html
message("text")
message(STATUS "${PROJECT_SOURCE_DIR}")

②添加头文件搜索路径
格式:target_include_directories(可执行程序名称 作用域标记 路径)
注:这里用到了“可执行程序名称”,所以该语句之前应该使用了add_executable,否则会报错
target_include_directories(Tutorial PUBLIC ${PROJECT_SOURCE_DIR}/header)

4.生成与添加链接库

①指定使用哪些文件来生成库
add_library(MathFunctions MathFunctions.cxx mysqrt.cxx)

②添加子目录(MathFunctions为目录名称)
add_subdirectory(MathFunctions)

③添加库文件搜索路径(与target_include_directories类似)
target_link_libraries(Tutorial PUBLIC MathFunctions)

5.总结

目前学到这里已经可以正常的编译简单的项目,后续有其它的问题再继续观看视频。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邺清璇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值