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.总结
目前学到这里已经可以正常的编译简单的项目,后续有其它的问题再继续观看视频。