CMake学习

CMakeLists.txt

cmake 复制代码
PROJECT (Hello)
SET(SRC_LIST main.cpp)
MESSAGE(status "Binary dir: " ${PROJECT_BINARY_DIR})
ADD_EXECUTABLE(hello ${SRC_LIST})
  • PROJECT_BINARY_DIRPROJECT_SOURCE_DIR是两个预定义变量

  • SET (SRC_LIST main.cpp)定义变量以及其内部值

  • MESSAGE向终端输出用户自定义信息,信息包括三种

    • SEND_ERROR:产生错误,生成过程被跳过
    • STATUS:输出前缀为-的信息
    • FATAL_ERROR:立即终止所有cmake过程

cmake指令

  • cmake -B build -G "Unix Makefiles"
    • -B 表示要将构建中的过程文件都生成到指定文件内
    • -G 表示指定构建系统
    • 上述会在指定的build文件夹中生成包括Makefiles文件在内的众多文件
    • 再执行make就可以生成目标文件了
  • cmake --build .在当前文件夹下找到Makefiles文件来执行make后的效果是一样的
    • cmake --build ./build --config Release --target hello

变量set

写法:set(变量名 变量值)

  • 特殊变量
    • 指定使用C++标准:
      • 第一种方法,指定C++编译版本set(CMAKE_CXX_STANDARD 11/14/17/20),注意其中的数字只能写一个不能并写
        • 相当于在执行编译时使用参数-std=c++11
        • 指定C编译版本:set(CMAKE_C_STANDARD 11)
      • 第二种方法:在使用cmake命令时指定,例如cmake CMakeLists.txt文件路径 -DCMAKE_CXX_STANDARD=11/14/17
        • -D代表指定一个宏
    • 可执行程序输出路径set(EXECUTABLE_OUTPUT_PATH ${HOME}/bin),如果路径不存在会自动创建
      • 在此之前设置set(HOME /home/robin/build)
      • 建议这个路径使用绝对路径

CMake构建大型c++项目

cmake 复制代码
# first-cmake
# 指定编译版本
cmake .. -DCMAKE_CXX_STANDARD=11
  • 执行cmake:
    • cmake -S . -B build
      • -S是指定查找CMakelist.txt文件路径,-B是指令生成所有文件到指定目录build下,如果没有创建build文件夹,会自动创建
    • cmake --build build(好像不好用)
      • 不用进入build文件夹而开始编译
相关推荐
听雨入夜10 小时前
CMake构建学习笔记-libxml库的构建
笔记·学习
不在逃避q10 小时前
一步一步学习使用LiveBindings()TListView进阶使用(),打造天气预报程序
服务器·数据库·学习
知识分享小能手11 小时前
高等数学学习教程,从入门到精通,微分中值定理与导数的应用(5)
学习·机器学习·概率论
520拼好饭被践踏11 小时前
JAVA+Agent学习day25
java·开发语言·学习
魔术师Dix11 小时前
StartGame:Unity TDD 外部工程指南
学习·游戏·unity·c#·测试驱动开发
小弥儿12 小时前
GitHub今日热榜 | 2026-07-31:AI Agent工作流共享赛道升温
人工智能·学习·github
小蒋学算法21 小时前
算法-M个非重叠子数组最大和II-WQS二分学习
数据结构·学习·算法
重庆小透明1 天前
带你从不同视角了解三大MQ
java·学习·spring·kafka·rabbitmq·rocketmq
~光~~1 天前
【xv6学习】L0_环境配置
单片机·嵌入式硬件·学习
实验如有神祝女士1 天前
不同参数规模大模型在医学翻译场景的适配差异
论文阅读·人工智能·深度学习·学习·算法·语言模型·论文笔记