cmake和make常见用法
cmake
1、编译时最好使用命令行指定 cmake 的编译参数
- 具有全局作用
- 可以覆盖文件中的变量值
- 指定交叉编译器
- 指定编译所需依赖库路径
- 指定安装目录是常用参数
- 指定编译核心数
- 指定生成器
mkdir build // 建立构建目录
cd build // 进入构建目录
cmake .. // 配置但不编译源码,找CMakeLists.txt 生成构建文件,如Makefile、build.ninja、.sln文件,cmake跨平台
cmake --build . // 找构建文件(比如Makefile等)调用底层工具(如 make / ninja / MSBuild)编译源码
2、常用命令、编译参数、内部变量
2.1 命令
2.2 内部变量
2.3 编译参数
- -B build目录
- -S source目录
3、CMakeLists.txt 常用语法
// 最基础
cmake_minimum_required(VERSION 3.10) // 指定cmake最低版本
project(Tutorial) // 项目名字,生成PROJECT_NAME内部变量
add_executable(Tutorial tutorial.cxx) // 为执行文件添加源文件
// C++版本
set(CMAKE_CXX_STANDARD 11) // 设置cmake宏的值,指定C++版本
set(CMAKE_CXX_STANDARD_REQUIRED True)
// 添加项目版本,最后在.c文件中包含Config.h头文件即可
project(Tutorial VERSION 1.0) // 设置工程名+VERSION+版本号后,cmake会自动生成 Tutorial_VERSION_MAJOR、Tutorial_VERSION_MINOR内部变量,值为1、0
configure_file(Config.h.in Config.h) //将Config.h.in文件(源文件目录下)中@VAR@的变量替换cmake内部变量并生成Config.h(build目录下)
target_include_directories(Tutorial PUBLIC
"${PROJECT_BINARY_DIR}"
) // 找到生成的头文件路径,PROJECT_BINARY_DIR表示build目录
//添加库
add_library(MathFunctions MathFunctions.cxx mysqrt.cxx) // 子目录CMakeLists.txt中添加两个cpp文件
add_subdirectory(MathFunctions) // 项目(最高层)CMakeLists.txt中添加
target_link_libraries(Tutorial PUBLIC MathFunctions) // 链接库到可执行程序
target_include_directories(Tutorial PUBLIC
"${PROJECT_BINARY_DIR}"
"${PROJECT_SOURCE_DIR}/MathFunctions"
) // PROJECT_SOURCE_DIR 就是项目的CMakeLists.txt所在目录,增加子目录头
make
本文来自博客园,作者:变秃了也就变强了,转载请注明原文链接:https://www.cnblogs.com/lichangyi/p/18941039

浙公网安备 33010602011771号