首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果include_directories中的某个路径不存在,为什么CMakeLists不(在编译期间)抛出警告/错误?

在CMake中,include_directories指令用于添加头文件搜索路径,以便编译器能够找到所需的头文件。如果include_directories中的某个路径不存在,CMakeLists并不会在编译期间抛出警告或错误。这是因为CMake的设计理念之一是提供灵活性和可移植性。

CMake允许开发者在不同的平台和环境中使用相同的CMakeLists文件进行构建。在某些情况下,特定的头文件路径可能只在特定的平台或环境中存在,而在其他平台或环境中不存在。如果CMake在编译期间强制要求这些路径存在,将会导致跨平台或跨环境的构建失败。

相反,CMake提供了一种灵活的机制,使开发者能够根据需要添加或删除头文件搜索路径。这样,开发者可以根据特定平台或环境的要求进行配置,而不会受到CMake的限制。这种设计使得CMake可以适应各种复杂的构建需求。

然而,虽然CMake不会在编译期间抛出警告或错误,但在实际编译过程中,如果某个路径不存在,编译器将无法找到相应的头文件,从而导致编译错误。因此,开发者在使用include_directories指令时,应确保所添加的路径是存在的,以避免编译错误的发生。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云官网:https://cloud.tencent.com/
  • 云服务器 CVM:https://cloud.tencent.com/product/cvm
  • 云原生应用引擎 TKE:https://cloud.tencent.com/product/tke
  • 人工智能平台 AI Lab:https://cloud.tencent.com/product/ailab
  • 云数据库 CDB:https://cloud.tencent.com/product/cdb
  • 云存储 COS:https://cloud.tencent.com/product/cos
  • 区块链服务 BaaS:https://cloud.tencent.com/product/baas
  • 物联网平台 IoT Hub:https://cloud.tencent.com/product/iothub
  • 移动开发平台 MDP:https://cloud.tencent.com/product/mdp
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

CMake搭建编译环境总结

获取环境变量 设置编译器 设置依赖库路径 包含头文件路径 添加编译编译选项 添加打印 CMakeLists路径嵌套 控制编译流程 Shell脚本传递宏至CMakeList CMakeLists传递变量至代码工程...配交叉编译工具时,此处应写对应交叉编译工具链绝对路径。...-pedantic-errors参数将这些警告视为错误,等同于-Werror=pedantic。 -Wconversion: 隐式转换可能导致值变化时候发出警告。...隐式转换时候,如果值发生变化,那么结果可能就不是预料中,所以最好使用显式转换。...编译器支持对代码进行诊断,针对代码本身不是错误但是疑似错误或者可能存在风险地方发出警告,而警告编译选项就是用于控制需要告警警告类型

2.3K20

Android NDK 开发 | CMake 使用手册 - 初见篇

其实 IDE 中点击运行按钮,控制台打印结果,期间就在做这些事。这就是通过 CMake 构建 C++ 项目最简单案例。 ---- 2....---- 4.打印输出与文件夹搜索 这样会出现一个问题,如果源码文件非常多,一一列举会非常复杂。如果能对某个文件夹进行自动搜索包含就好了。...链接库构建与集成 Android 朋友应该对 so 动态链接库并不陌生,windows 朋友对 dll 动态链接库也陌生。其实两者本质上是类似的,只是不同平台构建产物不同罢了。...---- 集成一个三方动态链接库,只需 CMakeLists.txt 中办三件事: include_directories : 搜索引入对应头文件 link_libraries : 搜索对应链接库... Android 项目构建过程,会使用 ndk 通过 CMakeLists 来构建 C++ 相关代码,如下可以看出,构建产物确实会存在构建 .so 动态链接库。

1K20

CMake学习笔记(三)——以笔者Robosub竞赛为例

,任务阶段类实现源码 IPCClients,不同客户端二进制文件生成源码 IPCServer,服务器端文件生成源码 笔者编译生成整个项目,是根目录IPCSocket下创造文件夹build,build.../IPCServerCMakeLists.txt文件。如果这些CMakeLists.txt文件也存在ADD_SUBDIRECTORY指令也同理。...}是通过编译安装OpenCV源码后,系统便已经存在了该变量。.../CustomizeFunctions/GeneralImageProcess) # 查找某个路径所有源文件,并将源文件列表存储到某个变量 AUX_SOURCE_DIRECTORY(./ LIB_SERVER_SOURCE...该部分CMakeLists.txt${PROJECT_BINARY_DIR}/bin路径,生成了所有客户端可执行文件,如下图所示: ? 4.

1.2K100

CMAKE使用手记

文章目录 致谢 编译与源代码分离 CMakeLists.txt 自动继承父目录 CMake 脚本基本语法 注释 指令 变量 字符串展开变量 转义字符串 脚本流程控制 条件语句 循环语句 常用命令...---- 变量 撰写 CMakeLists 时可以使用变量储存资料以及作为指令参数。 CMake 变量具有以下特征: 1、变量严格区分大小写!...无论是赋值,还是比较、判断操作,都是通过内置指令来完成。 5、变量可以认为都是全局,哪怕一个宏定义变量,也可以外面被访问到。 如果字符串包含空格,那么可以不加引号,直接使用。...如果在命令,使用包含了字符串数组变量作为参数会是怎样情况呢?...例如,下面的变量: set(foo a b c) 将其作为参数传入一个指令: command(${foo}) 这等同于: command(a b c) ---- 字符串展开变量 字符串如果用${

49120

CMake使用教程和原理

编译命令可以归结为以下3个大类: 编译最低要求:版本号什么 编译选项: SET(CMAKE_CXX_STANDARD 14):为什么是CXX 条件编译如果开启了CXX_VARIADIC_TEMPLATES...include_directories(${CMAKE_CURRENT_LIST_DIR}/include), CMAKE_CURRENT_LIST_DIR这个变量,它表示当前CMakeLists所在路径...作用是把dir1, [dir2 …]这(些)个路径添加到当前CMakeLists及其子CMakeLists头文件包含路径; AFTER 或者 BEFORE 指定了要添加路径是添加到原有包含列表之前或之后...:查找dir路径所有源文件,保存到variable变量....比如被搜索路径下添加源文件,此时没有修改CMakeLists脚本,但是CMakeLists并不需要(没有)变化,构建系统无法察觉到新加文件,除非手动重新运行cmake,否则新添加文件就不会被编译到项目结果

11.2K296

CMake简介及使用实例

linux平台下使用CMake生成 Makefile并编译流程如下: (1)编写CmakeLists.txt。...一个 CMakeLists.txt文件主要由 CMake命令组成。 (1) CMake,注释由 #字符开始到此行结束。 (2)命令名区分大小写,参数需区分大小写。...…]) 命令简述:用于查找包含文件 name1 路径如果找到则将路径保存在 VAR(此路径为一个绝对路径),如果没有找到则结果为-NOTFOUND。...(目录)路径列表并保存在 variable #文件路径列表每个文件文件名都能匹配 globbing expressions(非正则表达式,但是类似) #如果指定了 RELATIVE路径,那么返回文件路径列表路径为相对于...(语法为 CMake ,这里使用 CMake .. 表明了 CMakeLists.txt Build目录父目录)。

2.5K21

【Android 高性能音频】Oboe 开发流程 ( 导入 Oboe 库 | 使用预构建二进制库和头文件 | 编译 Oboe 源码 )

并记录该目录路径 ; 推荐将源码放在 cpp 源码路径下 ; 编辑 CMakeLists.txt 构建脚本 : ① 设置 Oboe 源代码路径 : 这里 假设 Oboe 源代码 CMakeLists.txt.../oboe) ③ 指定 Oboe 源码头文件路径 : 允许本次 CMake 编译目标库可以包含 Oboe 源码头文件 , 进而访问 Oboe API ; include_directories (...设置 Oboe 源代码路径 , 这里假设 Oboe 源代码 CMakeLists.txt 构建脚本相同层级目录 , 该操作相当于设置了一个变量 set (OBOE_DIR ....将 Oboe 源码目录设置为工程路径 , # add_subdirectory 告诉 CMake 到 OBOE_DIR 路径查找该路径 CMakeLists.txt 构建脚本 , # 编译该构建脚本中指定源码...指定 Oboe 源码头文件路径 # 允许本次 CMake 编译目标库可以包含 Oboe 源码头文件 , 进而访问 Oboe API include_directories (${OBOE_DIR

98400

CMake结合Visual Studio开发Qt应用程序注意事项

Qt工程管理 个人比较偏爱于使用CMake来管理C++工程,因为只要编写一个CMakeLists.txt文件,就可以Windows和Mac上生成各自IDE工程。...开发Qt应用程序时候,虽然有Qt Creator可以使用,甚至Qt Creator还可以直接导入CMake工程,但是其调试和错误提示功能实在太过寒碜,导致调试过程各种郁闷。...如果机器上装了多个版本Qt库的话,使用CMake生成Qt工程时候,最容易出错了。CMake在生成工程时候,会去搜索用户和系统Path路径,查找系统上安装Qt库。...如果工程编译后,再去修改PATHQt版本路径,会出现一些诡异现象。...像我碰到一些情况包括:(1)程序启动起来或者报错“xxx找不到符号入口点”;(2)资源加载不到,典型特征是使用QRC路径(如“:/style/default.qss”)来加载资源会失败;(3)程序无故崩溃或执行结果不正常

2.7K20

Cmake使用

hello.cpp) 语法:set(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]]) include_directories – 向工程添加多个特定头文件搜索路径...如果是 in source build,指就是工程顶层目录。 如果是 out-of-source 编译,指的是工程编译发生目录。...:库文件输出存放路径 CMake编译工程 CMake目录结构:项目主目录存在一个CMakeLists.txt文件 两种方式设置编译规则: 包含源文件子文件夹包含CMakeLists.txt文件,主目录...CMakeLists.txt通过add_subdirectory添加子目录即可; 包含源文件子文件夹未包含CMakeLists.txt文件,子目录编译规则体现在主目录CMakeLists.txt;...编译流程 linux 平台下使用 CMake 构建C/C++工程流程如下: 手动编写 CmakeLists.txt。

1.3K30

万字总结编译利器CMake,从入门到项目实战演练

这些 Make 工具遵循着不同规范和标准,所执行 Makefile 格式也千差万别。这样就带来了一个严峻问题:如果软件想跨平台,必须要保证能够不同平台编译。...下面的测试都使用了PASS_REGULAR_EXPRESSION测试属性来确认输出结果是否含有某个字符串。...本节,我们将在构建过程创建表,然后将该表编译到我们应用程序。 首先,让我们删除MathFunctions/CMakeLists.txt对log和exp函数检查。...(第10步)添加生成器表达式 构建系统生成期间会评估生成器表达式,以生成特定于每个构建配置信息。...如果一切设置正确,您将看到CMake将生成如下错误: 目标“MathFunctions”INTERFACE_INCLUDE_DIRECTORIES 属性包含 路径: “/Users/robert/

1.1K00

CMake学习笔记(二)——CMake语法

这行命令是可选,我们可以写这句话,但在有些情况下,如果CMakeLists.txt文件中使用了一些高版本cmake特有的一些命令时候,就需要加上这样一行,提醒用户升级到该版本之后再执行cmake。...此处对内部编译与外部编译做出介绍: (1) 外部构建与内部构建 假设此时已经完成了CMakeLists.txt编写,CMakeLists.txt所在目录下,有两种执行cmake方法: cmake...类似于gcc编译参数-l,即指定编译过程编译器搜索头文件路径。当项目需要头文件不在系统默认搜索路径时,则指定该路径。 AFTER/BEFORE参数,控制追加或置前。...默认情况下,追加当前头文件搜索路径后面。 注:如果路径包含空格,可以使用双引号将它括起来。 例: INCLUDE_DIRECTORIES(/usr/include/thrift) 6....AUX_SOURCE_DIRECTORY 查找某个路径所有源文件,并将源文件列表存储到一个变量

5.4K100

cmake 简介2021-10-03

工程查找并使用其他程序库方法 开发软件时候我们会用到一些函数库,这些函数库不同系统安装位置可能不同,编译时候需要首先找到这些软件包头文件以及链接库所在目录以便生成编译选项...该命令参数 path* 指示目录查找文件 name1 并将查找到路径保存在变量 VAR 。...这些特性 gcc/g++ 是通过编译参数来决定,如果将优化程度调到最高需要设置参数-O3,最低是 -O0 即不做优化;添加调试信息参数是 -g -ggdb ,如果添加这个参数,调试信息就不会被包含在生成二进制文件...该命令参数 path* 指示目录查找文件 name1 并将查找到路径保存在变量 VAR 。...这些特性 gcc/g++ 是通过编译参数来决定,如果将优化程度调到最高需要设置参数-O3,最低是 -O0 即不做优化;添加调试信息参数是 -g -ggdb ,如果添加这个参数,调试信息就不会被包含在生成二进制文件

32220

Linux下CMake简明教程

本文主要讲述Linux下如何使用CMake来编译我们程序。...但是如果有一百个源文件,再这样做就有点坑了,无法体现cmake优越性,cmake提供了一个命令可以把指定目录下所有的源文件存储一个变量,这个命令就是 aux_source_directory(dir...这里解释一下为什么build目录下运行cmake?...从前面几个case可以看到,如果这样做,cmake运行时生成附带文件就会跟源码文件混在一起,这样会对程序目录结构造成污染,而在build目录下运行cmake,生成附带文件就只会待在build目录下...target_link_libraries: 把目标文件与库文件进行链接 使用find_library好处是执行cmake ..时就会去查找库是否存在,这样可以提前发现错误,不用等到链接时。

1.8K10

用Android Studio编译BareSIP

BareSIP官方虽然也有和Android相关文档说明,其对Android开发者而言相当不友好,虽然也有简单Demo,但是文档描述很少,也很难应用到生产环境如果想基于此快速将BareSIP整合到应用并进行二次开发...源代码mk目录下有CMakeLists.txt文件,但是直接引用可能无法Android Studio中进行编译,因此我们需要修改或者直接新建一个CMakeLists.txt,注意编译re需要引用openssl...baresip需要引用re、rem头文件,这里没有引入baresip模块代码 cmake_minimum_required(VERSION 3.4.1) include_directories(...,而baresiplib是我们提供给上层APP在运行时使用接口模块,因此要编译成动态库,且链接上述编译几个静态库 cmake_minimum_required(VERSION 3.4.1) include_directories...CMake脚本编写完成后可直接编译如果编译错误问题可以根据具体问题进行修改,编译成功后可以在编译输出文件目录下找到编译baresip、openssl、re、rem等静态库,如下: app

1.5K10

解决CMAKE_CURRENT_SOURCE_DIR

所在子目录,使用上述方式可能会导致找不到头文件错误。...使用 ​​CMAKE_CURRENT_LIST_DIR​​ 变量来代替 ​​CMAKE_CURRENT_SOURCE_DIR​​ 变量,能够确保无论多级子目录哪个位置,都能正确获取到当前源代码目录路径...它能够帮助开发者更方便地构建、测试和部署他们软件项目。为什么选择CMake?...跨平台支持:CMake可以生成适用于多种操作系统和编译构建脚本。这意味着你可以使用相同CMake配置文件不同平台上构建你项目。...编写CMakeLists.txt文件:CMakeLists.txt文件,使用CMake提供语法和命令来描述项目的构建过程,例如定义变量、设置编译选项、添加源文件、链接库等。

32630

cmake使用

}:本CMakeLists.txt所在文件夹路径 # ${PROJECT_NAME}:本CMakeLists.txtproject名称 project(xxx) # 获取路径下所有的.cpp/.c.../.cc文件,并赋值给变量 aux_source_directory(路径 变量) # 给文件名/路径名或其他字符串起别名,用${变量}获取变量内容 set(变量 文件名/路径/...include_directories(路径) # 规定.so/.a库文件路径 link_directories(路径) # 对add_library或add_executable生成文件进行链接操作...common SHARED util.cpp) # 生成动态库或共享库 搜索所有的 cpp 文件 aux_source_directory(dir VAR) 发现一个目录下所有的源代码文件并将列表存储一个变量...CMAKE_CURRENT_SOURCE_DIR 当前处理 CMakeLists.txt 所在路径 CMAKE_CURRENT_BINARY_DIR target 编译目录 CMAKE_CURRENT_LIST_DIR

2K30
领券