cmakelists总结

2023-10-30

  • 指定 cmake 的最小版本
    cmake_minimum_required(VERSION 3.4.1),
  • 设置项目名称
    project(demo)
  • 设置编译类型
	add_executable(demo demo.cpp) # 生成可执行文件
	add_library(common STATIC util.cpp) # 生成静态库
	add_library(common SHARED util.cpp) # 生成动态库或共享库
  • 指定编译包含的源文件
	add_library(demo demo.cpp test.cpp util.cpp)
  • 设置包含的目录
include_directories(
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${CMAKE_CURRENT_BINARY_DIR}
    ${CMAKE_CURRENT_SOURCE_DIR}/include
)
  • 设置链接库搜索目录
link_directories(
    ${CMAKE_CURRENT_SOURCE_DIR}/libs
)
  • 设置 target 需要链接的库
target_link_libraries( # 目标库
                       # 目标库需要链接的库
)

设置变量

set(SRC_LIST main.cpp test.cpp)
add_executable(demo ${SRC_LIST})

打印信息

message(${PROJECT_SOURCE_DIR})
message("build with debug mode")
message(WARNING "this is warnning message")
message(FATAL_ERROR "this build has many error") # FATAL_ERROR 会导致编译失败

包含其它 cmake 文件

include(./common.cmake) # 指定包含文件的全路径
include(def) # 在搜索路径中搜索def.cmake文件
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) # 设置include的搜索路径

预定义变量

PROJECT_SOURCE_DIR:工程的根目录
PROJECT_BINARY_DIR:运行 cmake 命令的目录,通常是 ${PROJECT_SOURCE_DIR}/build
PROJECT_NAME:返回通过 project 命令定义的项目名称
CMAKE_CURRENT_SOURCE_DIR:当前处理的 CMakeLists.txt 所在的路径
CMAKE_CURRENT_BINARY_DIR:target 编译目录
CMAKE_CURRENT_LIST_DIR:CMakeLists.txt 的完整路径
CMAKE_CURRENT_LIST_LINE:当前所在的行
CMAKE_MODULE_PATH:定义自己的 cmake 模块所在的路径,SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake),然后可以用INCLUDE命令来调用自己的模块
EXECUTABLE_OUTPUT_PATH:重新定义目标二进制可执行文件的存放位置
LIBRARY_OUTPUT_PATH:重新定义目标链接库文件的存放位置

环境变量

使用环境变量

$ENV{Name}

系统信息

­CMAKE_MAJOR_VERSION:cmake 主版本号,比如 3.4.1 中的 3
­CMAKE_MINOR_VERSION:cmake 次版本号,比如 3.4.1 中的 4
­CMAKE_PATCH_VERSION:cmake 补丁等级,比如 3.4.1 中的 1
­CMAKE_SYSTEM:系统名称,比如 Linux-­2.6.22
­CMAKE_SYSTEM_NAME:不包含版本的系统名,比如 Linux
­CMAKE_SYSTEM_VERSION:系统版本,比如 2.6.22
­CMAKE_SYSTEM_PROCESSOR:处理器名称,比如 i686
­UNIX:在所有的类 UNIX 平台下该值为 TRUE,包括 OS X 和 cygwin
­WIN32:在所有的 win32 平台下该值为 TRUE,包括 cygwin

主要开关选项

BUILD_SHARED_LIBS:这个开关用来控制默认的库编译方式,如果不进行设置,使用 add_library 又没有指定库类型的情况下,默认编译生成的库都是静态库。如果 set(BUILD_SHARED_LIBS ON) 后,默认生成的为动态库
CMAKE_C_FLAGS:设置 C 编译选项,也可以通过指令 add_definitions() 添加
CMAKE_CXX_FLAGS:设置 C++ 编译选项,也可以通过指令 add_definitions() 添加
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cmakelists总结 的相关文章

  • 在 C++ 中使用库时出现“未定义的引用”

    当运行我在互联网上找到的一些代码时 我遇到了以下问题http docs opencv org doc tutorials objdetect cascade classifier cascade classifier html newmai
  • 为什么引用未声明的变量会引发引用异常,但引用未声明的属性却不会?

    Mozilla 说变量是全局对象的属性 如果对象具有未定义的属性 则尝试访问它不会创建引用异常 它只是返回该属性未定义 如果存在这样一个全局对象 那么为什么访问其不存在的属性 即 变量 会产生引用错误 这两种情况到底有什么区别 Exampl
  • PHP 致命错误:调用未定义的函数?

    因此 当我将网站托管在我的网络主机上时 我的网站出现了问题 我收到这个错误 PHP Fatal error Call to undefined function getSkillIcons 奇怪的是 在本地 Xampp 它工作得很好 这就是
  • jQuery.getScript() 无法加载函数

    我正在尝试加载具有如下函数的脚本 getScript js mymy js done function if readCookie my cookie yes do sth here or getScript js mymy js func
  • C# 在 if 循环中使用未分配的局部变量

    因为我是一个该死的初学者 所以我需要一些帮助 using System using System Collections Generic using System Linq using System Text using System Th
  • 为什么我的数组中的某些值未定义

    我在 php 中有一个 for 循环 它在我的页面上添加了许多复选框 如下所示
  • NodeJS Express req.session 未定义

    就是想不通这个 我发现的关于快速会话的所有内容都表明它确实有效 但对我来说并非如此 我的整个应用程序配置 app configure gt app set port process env PORT 3000 app set views p
  • http://localhost/undefined 404(未找到)

    我的问题描述不清楚 让我再尝试一次 注意 这是我的生产 登台和开发网站 不仅仅是评论者似乎认为的那样只是我的开发网站 常见的问题 注意 使用 Chrome 时会出现此问题 而使用 Firefox 时不会出现此问题 问题出现在网站首页 htt
  • 我可以将变量设置为未定义或将未定义作为参数传递吗?

    我对 JavaScript 有点困惑undefined and null values 什么是if testvar 实际上呢 它是否测试undefined and null要不就undefined 一旦定义了变量 我可以将其清除回undef
  • JavaScript 未定义替换为 null

    在 JavaScript 中undefined可以重新分配 因此通常建议创建一个自执行函数 以确保 undefined 实际上是未定义的 作为备选null and undefined肯定是 但任何其他值都大致相当于null undefine
  • 我应该声明并检查 PHP 中是否存在变量吗?

    我注意到 XAMPP 上启用了严格的错误报告 并且现在出现未定义的索引错误 我只有两个小问题 我还在学习 我知道你不知道have在 PHP 中声明变量 但是声明它们有什么好处吗 如果不是 为什么在我未定义错误的情况下启用严格错误报告时会出现
  • 这些未定义的检查在行为上是否相同?

    我似乎有不同的方法 严格平等 检查undefined if something undefined if typeof something undefined if something void 0 可能还有其他人 In a 幸福的场景他们
  • React Props 未定义

    我无法理解为什么我的 props updateBuilding 不起作用 当 prop 位于 render 方法中时 以下内容有效 class Buildings extends Component constructor props su
  • 解析具有未定义值的 JSON?

    可能的重复 解析或修复具有特殊 未定义 值的 JSON https stackoverflow com questions 59304404 parsing or fixing jsons with special undefined va
  • 仅当值既不为 null 也不未定义时才调用函数

    单击按钮时 我检查本地存储键中是否存在某些内容 如下所示 var a localStorage getItem foo if typeof a undefined Function 但如果该键根本不存在 则返回 null 我怎样才能打电话如
  • JS 检查深层对象属性是否存在[重复]

    这个问题在这里已经有答案了 我正在尝试找到一种优雅的方法来检查对象中是否存在某些深层属性 因此 实际上试图避免对未定义的情况进行巨大的保护性检查 例如 if typeof error undefined typeof error respo
  • 显示未定义的实例

    可以采取任何措施来为未定义的值定义 Show 实例吗 也许存在一些 GHC 扩展 我想要这样的东西 gt print 1 undefined 1 undefined 根据Haskell 2010 报告 第 9 章 http www hask
  • 茉莉花单元测试 - 测试对象的未定义属性

    我有以下声明 expect A BAR name toEqual foo 由于我的对象 A 具有顶级属性 BAR 并且 bar 具有值 foo 传递 我想测试我的结构以确认属性 NONEXISTINGPROP 尚未定义 例如 expect
  • 为什么此类方法中的“this”未定义?

    我试图搜索似乎整个互联网 但我仍然对我为微服务编写的 JS 类的问题感到烦恼 仍在学习中 因此 我尝试在实例化对象上调用类方法 根据我的知识和我的 我认为是错误的 单元测试 它应该可以工作 好吧 我将从我收到的错误开始 GET api us
  • jquery 中的函数返回未定义[重复]

    这个问题在这里已经有答案了 我在 jquery 中调用的函数返回未定义 我检查了该函数 当我对其进行调试时 它返回正确的数据 function addToPlaylist component type add to pl value pl

随机推荐

  • 富文本 QTextDocument 解析及相关

    QTextDocument 富文本 QTextDocument textDoc textDoc setIndentWidth 20 缩进 textDoc setHtml text gt htmlText 文本 QTextBlock 文本块
  • docker数据持久化的相关介绍

    数据持久化 一 数据持久化简介 二 data volume介绍 三 Bind mount介绍 四 Docker Manager Volume介绍 五 容器与容器的数据共享 一 数据持久化简介 1 Storage Driver 数据存储 Ce
  • 深度学习环境配置2——windows下的torch=1.2.0环境配置

    深度学习环境配置2 windows下的torch 1 2 0环境配置 注意事项 一 2021 9 11更新 二 2021 7 8更新 学习前言 各个版本pytorch的配置教程 环境内容 环境配置 一 Anaconda安装 1 Anacon
  • 谷歌浏览器如何在不登录的情况下保存书签

    谷歌浏览器Chrome书签同步方法 新方法 打开谷歌浏览器之后ctrl shift o打开书签管理 点击右上角三个小点将书签导出到本地即可
  • Torchtext 0.12+ API构造训练用DataLoader与词向量的Embedding(2)

    torchtext的详细用法请参考上一期 Torchtext 0 12 新版API学习与使用示例 1 构造embedding的思路也很简单 把语料训练成torchtext对应的vocab 然后对于输入的句子 进行如下转换 文本 gt voc
  • 服务器能打开其他网站打不开,为什么有的网页打不开其他能打开(浏览器网页打不开的原因有哪些)...

    不知道小伙伴们 有没有遇到这样的问题 网络明明没问题 QQ等工具也可以正常登陆 就是有一部分网页打不开 打不开一般就俩原因 1 网站服务器出问题了 网页访问不了 2 DNS问题 访问网页 错误代码 DNS PROBE FINISHED NX
  • TypeScrip详解十八:ts中的类型断言

    TypeScript是一种静态类型的编程语言 它允许开发人员在编写代码时指定变量和函数的类型 但是 有时候我们需要在某些情况下告诉编译器某个值的类型 这时候就需要使用类型断言 什么是类型断言 类型断言是告诉编译器一个值的类型的方法 使用类型
  • Vite项目插件

    1 unplugin vue components 自动导入组件 1 1 安装 npm install unplugin vue components D 1 2 自动导入ui库 该插件内置了大多数流行库解析器 Element Plus A
  • QT 的 Graphics View 系统

    这个框架是一个相对成熟的渲染引擎的上层框架 通常也可以会叫做 Scene View 在QT中 GraphicsView是一个与QWdiget系列一点点不一样的系统 这个系统主要由下面几个框架类构成 QGraphicsView QGraphi
  • [Unity][动作]禁用animation功能不让动画进行位移

    在unity 的 asset store 里面下载 的动作 有的时候会产生动画的位移 使得 人物角色的 animator 的 apply root motion 保持 取消勾选的状态 动画播放就不会进行移动了 参考资料 1 Unity 禁用
  • Landsat 8数据介绍

    1 简介 1 1 数据简介 2013年2月11日 美国航空航天局 NASA 成功发射Landsat 8卫星 Landsat 8卫星上携带两个传感器 分别是OLI陆地成像仪 Operational Land Imager 和TIRS热红外传感
  • 【动态更新】弃用deprecated登记

    由于各项目代码更新频率不一致 导致项目中存在已弃用或即将弃用的方法 故在此记录一下 方便查找 以下的时间并非弃用时间 仅代表我发现的时间 SQLAlchemy 2022 04 29更新 警告内容 SADeprecationWarning T
  • SQL注入时?id=1 and 1=1和?id=1 and 1=2的功能

    此文章是记录本人对知识理解的随手笔记 内容不肯定百分百正确 如有错误望指出并谅解 id 1 and 1 1 id 1 and 1 2 id 1 结论 若在GET请求中 id 1 and 1 1和 id 1 and 1 2都没有报错 则是字符
  • 可连接点对象及示例(一)

    转载请标明是引用于 http blog csdn net chenyujing1234 参考书本 EVC高级编程及其应用开发 客户是主动的 而组件是被动的 组件通过自身暴露给客户的接口来监听客户请求 一旦接收到客户请求便宜做出反应 这样的接
  • cnpm 执行时卡住应该怎么解决?

    问题 执行cnpm i时程序卡住 没有反应 此时最常见的方法就两种 一种是重新启动 另一种就是卸载重装 这两个办法都是非常的有效的 遇到了这个问题重新执行发现还是无法解决 之后我就卸载重装了 cnpm 解决方案 1 先卸载之前的 cnpm
  • 查询选修c语言课程的学生学号和姓名,数据库实验(学生信息表)

    目录 数据库实验 学生信息表 实验一 实验二 实验三 实验四 数据库实验 学生信息表 实验一 创建数据库以及学生信息表 课程信息表 选课表 create Table student Sno char 9 primary key Sname
  • vue报错

    Error in beforeCreate hook TypeError Cannot read property load of null 这种报错一般都是加载时机问题 比如 在vue实例加载完后再加载vuemap组件就会识别不了 此时就
  • 游戏扫雷 鼠标操作 C语言

    前言 这篇文章是我学习C语言后实现自己给自己定的小目标的记录性博客 这是第一篇比较系统的 但更多的是从我自身的角度出发写的博客 在决定开始做这个小游戏后 我在网上找了很多资料 在这个版本之前有一个夭折的版本 因为那个对于现在的我来说有些原理
  • 【JavaEE】_JavaScript基础语法

    目录 1 JavaScript概述 1 1 JavaScript简介 1 2 HTML CSS JavaScript的关系 1 3 JavaScrip的组成 2 JavaScript的书写形式 2 1 内嵌式 2 2 行内式 2 3 外部式
  • cmakelists总结

    指定 cmake 的最小版本 cmake minimum required VERSION 3 4 1 设置项目名称 project demo 设置编译类型 add executable demo demo cpp 生成可执行文件 add