首页 > 其他分享 >CMake 各个版本添加的新特性

CMake 各个版本添加的新特性

时间:2024-02-22 13:23:15浏览次数:31  
标签:CMake 生成器 新增 支持 添加 CUDA 版本

https://modern-cmake-cn.github.io/Modern-CMake-zh_CN/chapters/intro/newcmake.html

CMake 修改记录的简化版本,这里仅挑了作者认为的重点。这里,每个版本的名称都由作者自行命名,不要太在意。

CMake 3.0:接口库

这个版本添加了大量内容,主要是为了填充目标接口。一些需要的功能遗弃了,并在 CMake 3.1 中重新实现。

  • 首次发布于 2014年6月10日
  • 更新了文档
  • 添加了 INTERFACE 库类型
  • 支持项目版本关键字 VERSION
  • 导出构建树更容易
  • 括号参数和支持注释(未广泛使用)
  • 以及其他很多改进

CMake 3.1:支持 C++11 和编译特性

支持 C++11 的第一个版本,并针对 CMake 3.0 新特性进行了修复。如若需要使用旧版 CMake,该版本推荐作为最低。

  • 首次发布于 2014年12月17日
  • 支持 C++11
  • 支持编译特性
  • 源文件可以通过 target_sources 在创建目标之后添加
  • 优化了生成器表达式和 INTERFACE 目标

CMake 3.2:UTF8

一个小版本,主要是添加了小功能和对之前功能缺陷的修复。还有一些内部变化有,我认为对 Windows 和 UTF8 支持更好这个很重要。

  • 首次发布于 2015年3月11日
  • 可以在循环中使用 continue()
  • 新增文件和目录锁

CMake 3.3:if 中添加 IN_LIST

if中添加了 IN_LIST 选项,并且可以使用环境变量 $PATH (详见 CMake 3.6) 对库文件进行搜索,添加了 INTERFACE 库的依赖关系,还有其他一些改进。随着支持的语言越来越多, COMPILE_LANGUAGE 支持生成器表达式就很有必要了。并且,Makefile 在并行执行时的输出更好看了。

  • 首次发布于2015年7月23日
  • if 支持 IN_LIST 关键字
  • 新增 *_INCLUDE_WHAT_YOU_USE 属性
  • COMPILE_LANGUAGE 支持生成器表达式(只有某些生成器支持)

CMake 3.4:Swift & CCache

这个版本增加了许多有用的工具,对 Swift 语言的支持,以及常用功能的改进。也开始支持编译器启动器,比如 CCache。

  • 首次发布于 2015年11月12日
  • 支持 Swift 语言
  • get_filename_component 添加BASE_DIR 选项
  • 新增 if(TEST ...)
  • 新增 string(APPEND ...)
  • 为 make 和 ninja 添加了新的内置变量 CMAKE_*_COMPILER_LAUNCHER
  • TARGET_MESSAGES 允许 Makefile 在目标完成后打印消息
  • 导入目标开始出现在官方的 Find*.cmake 文件中

CMake 3.5:ARM

这个版本将 CMake 扩展到更多的平台,并且可以使用命令行来控制警告信息。

  • 首次发布于 2016年3月8日
  • 多个输入文件可以对应多个 cmake -E 命令。
  • 内置 cmake_parse_arguments 解析指令
  • Boost、GTest 等库支持导入目标
  • 支持 ARMCC,优化对 iOS 的支持
  • XCode 反斜杠问题修复

CMake 3.6:Clang-Tidy

这个版本增加了 Clang-Tidy 支持,添加了更多的工具和对原有功能的改进。 取消了在 Unix 系统上搜索 $PATH 的问题,取而代之的是使用 $CMAKE_PREFIX_PATH

  • 首次发布于 2016年7月7日
  • 为工程安装时添加 EXCLUDE_FROM_ALL
  • 新增 list(FILTER
  • 工具链添加了 CMAKE_*_STANDARD_INCLUDE_DIRECTORIESCMAKE_*_STANDARD_LIBRARIES
  • 改进了 Try-compile 功能
  • 新增 *_CLANG_TIDY 属性
  • 外部项目可以是浅克隆,以及其他改进

CMake 3.7:Android & CMake 的服务器模式

可以使用交叉编译,构建在 Android 平台运行的程序。if 的新选项可使代码可读性更好。新增的服务器模式是为了提高与 IDE 的集成(但 CMake 3.14+ 使用另一种方式取而代之)。优化了对 VIM 编辑器的支持。

  • 首次发布于 November 11, 2016
  • cmake_parse_arguments 新增了 PARSE_ARGV 模式
  • 改进了在 32 位工程在 64 位环境中的构建
  • if 增加了很多好用的比较选项,比如 VERSION_GREATER_EQUAL (真的需要这么久吗?)
  • 新增 LINK_WHAT_YOU_USE
  • 大量与文件和目录相关的自定义属性
  • 新增 CMake 服务器模式
  • 新增 --trace-source="filename",用于监控某些文件

CMake 3.8:C# & CUDA

CUDA 作为一种语言加入了 CMake,使用 cxx_std_11 作为编译器元特性。若使用 CMake 3.8+,新的生成器表达式真的很好用!

  • 首次发布于2017年4月10日
  • 原生支持 C# 语言
  • 原生支持 CUDA 语言
  • 新增元特性 cxx_std_11(以及14和17)
  • 优化 try_compile 对语言的支持
  • 新增 BUILD_RPATH 属性
  • COMPILE_FLAGS 支持生成器表达式
  • 新增 *_CPPLINT
  • 新增 $<IF:cond,true-value,false-value> (wow!)
  • 新增 source_group(TREE (终于可以在 IDE 中显示项目的文件夹结构了!)

CMake 3.9:IPO

这个版本对 CUDA 支持进行了大量修复,包括对 PTX 和 MSVC 生成器的支持。过程间优化(IPO)已正确支持了。

甚至有更多模块提供导入的目标,包括 MPI。

  • 首次发布于2017年7月18日
  • CUDA 支持 Windows
  • 优化部分情况下对对象库的支持
  • project 新增 DESCRIPTION 关键字
  • separate_arguments 新增 NATIVE_COMMAND 模式
  • INTERPROCEDURAL_OPTIMIZATION 强制执行(以及添加 CMAKE_* 初始化器,新增 CheckIPOSupported,支持 Clang 和 GCC )
  • 新增了GoogleTest模块
  • FindDoxygen进行了大幅度改进

CMake 3.10:CppCheck

CMake 现在使用 C++11 编译器构建,许多改进有助于编写可读性更好的代码。

  • 首次发布于2017年11月20日
  • 支持 Fortran 编译器 flang
  • 将编译器启动器添加到 CUDA
  • configure_file 支持 #cmakedefines
  • 新增 include_guard(),确保CMake源文件只包含一次
  • 新增 string(PREPEND
  • 新增 *_CPPCHECK 属性
  • 目录添加了 LABELS 属性
  • 极大地扩展了 FindMPI 模块
  • 优化了 FindOpenMP 模块
  • GoogleTest 可动态发现测试用例
  • cmake_host_system_information 可获取更多信息。

CMake 3.11:更快 & IMPORTED INTERFACE

这个版本运行起来 应该会 快很多,还可以直接将 INTERFACE 目标添加到 IMPORTED 库(内部的 Find*.cmake 脚本会更加清晰)。

  • 首次发布于 2018年3月28日
  • Fortran 支持编译器启动器
  • Xcode 和 Visual Studio 支持 COMPILE_LANGUAGE 的生成器表达式
  • 可以直接将 INTERFACE 目标添加到 IMPORTED INTERFACE 库中(Wow!)
  • 对源文件属性进行了扩展
  • FetchContent 模块现在允许在配置时下载 (Wow)

CMake 3.12:版本范围和CONFIGURE_DEPENDS

非常牛的版本,包含了许多长期要求添加的小功能。其中一个是新增了版本范围,现在可以更容易地设置最低和最高的 CMake 版本了。也可以在一组使用 GLOB 获取的文件上设置 CONFIGURE_DEPENDS,构建系统将检查这些文件,并在需要时重新运行!还可以对 find_package 的搜索路径使用通用的 PackageName_ROOT 。对 string 和 list 大量的功能添加、模块更新、全新的 Python 查找模块(2 和 3 版本都有)等等。

  • 首次发布于2018年7月17日
  • 支持 cmake_minimum_required 的范围表示(向后兼容)
  • 使用命令行 --build 构建时,支持 -j,--parallel 进行并行构建(传递给构建工具)
  • 支持编译选项中的 SHELL: 字符串(不删除)
  • 新增 FindPython 模块
  • 新增 string(JOINlist(JOIN 和 list(TRANSFORM
  • 新增 file(TOUCH 和 file(GLOB CONFIGURE_DEPENDS
  • 支持 C++20
  • CUDA 作为语言的改进:支持 CUDA 7 和 7.5
  • 支持 macOS 的 OpenMP (仅限命令行)
  • 新增了几个新属性和属性初始化器
  • CPack 可读取 CMAKE_PROJECT_VERSION 变量

CMake 3.13:连接控制

可以在Windows创建符号链接了!新增了许多新函数,响应了 CMake 的主流请求,如 add_link_optionstarget_link_directories 和 target_link_options。可以在源目录之外对目标进行更多的修改,可以更好的实现文件分离。target_sources 终于可以正确地处理相对路径(策略76)了。

  • 首次发布于 2018年11月20日
  • 新增 ctest --progress 选项,输出实时测试进度
  • 新增 target_link_options 和 add_link_options
  • 新增 target_link_directories
  • 创建符号链接 -E create_symlink,只支持 Windows
  • Windows 支持 IPO
  • 可对源目录和构建目录使用 -S 和 -B
  • 可对当前目标外的目录使用 target_link_libraries 和 install
  • 新增 STATIC_LIBRARY_OPTIONS 属性
  • target_sources 现在相对于当前源目录(CMP0076)
  • 若使用 Xcode,可以实验性地设置 schema 字段

CMake 3.14:文件工具 (AKA CMake π)

进行了很多小清理,包括几个用于文件的工具。生成器表达式可以在更多的地方使用,使用 list 要优于使用空变量。很多的 find 包可以产生目标。Visual Studio 16 2019 生成器与旧版本略有不同。不支持 Windows XP 和Vista。

  • 首次发布于 2019年3月14日
  • --build 命令添加了 -v/--verbose 选项。若构建工具支持,可以使用冗余构建
  • FILE指令新增了 CREATE_LINKREAD_SYMLINK 和 SIZE 选项
  • get_filename_component 新增了 LAST_EXT 和 NAME_WLE 用于获取文件最后的扩展名,比如可以从文件名 version.1.2.zip ,获取后缀名 .zip (非常方便!)
  • 可以在 if 语句中使用 DEFINED CACHE{VAR},查看是否在 CACHE 中定义了变量。
  • 新增 BUILD_RPATH_USE_ORIGIN,以改进对构建目录中 RPath 的处理。
  • CMake 服务器模式使用一个文件 API 所取代。从长远来看,这会影响 IDE。

CMake 3.15:升级CLI

这个版本有许多较小改进,包括对CMake命令行的改进,比如:通过环境变量控制默认生成器(现在很容易将默认生成器改为 Ninja)。--build 模式支持多个目标,添加了 --install 模式。CMake支持多级日志记录。可以使用一些方便的工具来测试生成器表达式。FindPython 模块持续改进,FindBoost 与 Boost 1.70 的新 CONFIG 模块有了更多的内联。export(PACKAGE) 发生了巨大变化,不再将默认目录设置为 $HOME/.cmake (若 cmake 最小版本为 3.15+),若用户若想使用它,需要额外的设置步骤。

  • 首次发布于 2019年7月17日
  • 新增控制默认生成器的环境变量 CMAKE_GENERATOR
  • 命令行可构建多个目标,cmake . --build --target a b
  • --target 可缩写为 -t
  • 项目安装支持命令行选项 cmake . --install,该过程不使用构建系统
  • 支持日志级别参数 --loglevel,为 message 指令添加 NOTICEVERBOSEDEBUG和 TRACE选项
  • list 指令新增了 PREPENDPOP_FRONT和 POP_BACK 选项
  • execute_process 指令新增了 COMMAND_ECHO 选项(CMAKE_EXECUTE_PROCESS_COMMAND_ECHO) 可以在运行命令之前自动显示具体命令
  • Ninja 的几个改进,包括对 SWIFT 语言的支持
  • 改进编译器和列表的生成器表达式

CMake 3.16:统一构建

添加了统一构建模式,允许源文件合并成单独的构建文件。增加了对预编译头文件的支持(可能是为 C++20 的模块做准备),完成了对许多小功能的修复,特别是对较新的特性,如 FindPython、FindDoxygen 等。

  • 首次发布于 2019年11月26日
  • 新增对 Objective C 和 Objective C++ 语言的支持
  • 使用 target_precompile_headers 支持预编译头文件
  • 支持使用 “Unity” 或 “Jumbo” 构建时(合并源文件)使用 CMAKE_UNITY_BUILD
  • CTest:展开列表,可跳过基于正则表达式的方式
  • 控制 RPath 的几个新特性。
  • 生成器表达式可以在更多地方使用,比如构建和安装路径
  • 可以通过新变量显式地控制查找位置

CMake 3.17:原生支持CUDA

添加了 FindCUDAToolkit,允许在不启用 CUDA 语言的情况下,查找和使用 CUDA 工具包!CUDA 现在更具可配置性,例如:链接到动态库。其他功能做了很多优化,比如:FindPython。并且,可以一次性遍历多个列表。

  • 首次发布于 2020年3月20日
  • CUDA_RUNTIME_LIBRARY 终于可以设置为 Shared!
  • 新增 FindCUDAToolkit
  • cmake -E rm 替换旧的删除命令
  • 添加 CUDA 元特性,如cuda_std_03等。
  • --debug-find 可跟踪包的搜索
  • ExternalProject 可以禁用递归签出
  • FindPython 更好地与 Conda 集成
  • DEPRECATION 可以应用于目标
  • 新增 rm 命令
  • 几个新的环境变量
  • foreach 新增 ZIP_LISTS 选项(一次性遍历多个列表)

CMake 3.18:CUDA与Clang & CMake宏特性

CUDA 现在支持 Clang (不可分离编译)。新增了 CUDA_ARCHITECTURES 属性,可以更好地支持针对 CUDA 硬件。cmake_language 命令支持从字符串中使用 cmake 命令和表达式。还有许多其他元特性的变化,可以使新功能可用:通过变量调用函数,解析字符串,并使用字符串配置文件。还有许多其他漂亮的小功能添加和功能修复,下面是其中的一些。

  • 首次发布于 2020年7月15日
  • cmake 命令可使用 cat 合并多个文件
  • 新增 cmake 命令的分析模式
  • cmake_language 新增 CALL 和 EVAL 选项
  • 若需多次导出,可使用 export 的 APPEND 选项(CMake 3.18+)
  • 可以使用 file() 进行打包
  • 若需要替换文件中的字符串,file(CONFIGURE 是比 configure_file 更好的方式
  • 其他 find_* 命令新增了 find_package 的 REQUIRED 标志
  • 为 list(SORT 新增了 NATURAL 比较模式
  • 新增处理 DIRECTORY 作用域属性的多个选项
  • 新增 CUDA_ARCHITECTURES
  • 新增 LINK_LANGUAGE 生成器表达式(包括 DEVICE/HOST 版本)
  • 源目录可以成为 FetchContent 的子目录

CMake 3.19:预设

可以以 JSON 的方式添加预设,用户将获得预设的默认值。find_package 支持版本范围,特殊的查找模块,比如:FindPython,有对版本范围的自定义支持。添加了许多新的权限控制,进一步的普及生成器表达式。

  • 首次发布于 2020年11月18日
  • CMake预设文件 —— 可以为每个生成器的项目设置默认值,或者用户可以进行预设。即使当前项目没有使用 CMakePresets.json ,也可将CMakeUserPresets.json 添加到 .gitignore 中。
  • XCode 12+ 中引入了新的构建系统
  • 支持 MSVC 对 Android 的构建
  • 新增 cmake -E create_hardlink
  • add_test 正确地支持测试名称中的空格
  • 可将 cmake_language 中标记为 DEFER 的目录放在最后进行处理
  • 大量新 file 选项,如临时下载和 ARCHIVE_CREATE 的 COMPRESSION_LEVEL
  • find_package 支持版本范围
  • DIRECTORY 可以在属性命令中包含二进制目录
  • string 新增 JSON 模式
  • 新 OPTIMIZE_DEPENDENCIES 属性和 CMAKE_* 变量可智能地删除静态库和对象库的依赖项。
  • PCH 支持 PCH_INSTANTIATE_TEMPLATES 属性和 CMAKE_* 变量。
  • 检查模块支持 CUDA 和 ISPC 语言
  • FindPython:新增 Python*_LINK_OPTIONS
  • ctest 的 compute-sanitizer 支持 CUDA 的 memcheck

CMake 3.20:文档

CMake 文档通过添加 “new in” 标签来快速查看添加的内容,无需切换文档版本,提高了工作效率!新增 C++23 的支持。源文件必须列出扩展名,并且始终遵循设置的 LANGUAGE 规则。还做了相当多的清理工作(为了使 工程部署的阻碍最小化,最好使用版本 ...3.20 对源码进行测试),继续改进预设。

  • 首次发布于 2021年3月23日
  • 支持 C++23
  • 新增 CUDAARCHS 环境变量,用于设置 CUDA 架构
  • 支持新的 IntelLLVM 编译器(OneAPI 2021.1)和 NVHPC的 NVIDIA HPC SDK
  • 一些扩展生成器表达式支持自定义命令/目标,可在安装时重命名
  • 新增的 cmake_path 命令可用于路径
  • try_run 新增了 WORKING_DIRECTORY 选项
  • file(GENERATE 添加了很多特性
  • 一些功能或特性的移除,如 cmake-serverWriteCompilerDetectionHeader(若策略设置为3.20+),以及一些可用新方法替代的东西。
  • 源文件必须包含扩展名

CMake 3.21:配色

不同的消息类型有不同的颜色!现在有变量可以查看是否在顶级项目中。大量有关持续清理和特化的新特性,如添加HIP语言和C17和C23支持。继续改进预设。

  • 首次发布于 2021年7月14日
  • 初步支持 MSVC 2022
  • 为 make 和 ninja 添加了 CMAKE_<LANG_LINKER_LAUNCHER
  • HIP 作为语言添加
  • 新增 C17 和 C23 支持
  • 新增 --install -prefix <dir> 和 --toolchain <file>
  • 消息根据消息类型着色!
  • 支持 MSYS,包括 FindMsys
  • file( 指令更新,添加了 EXPAND_TILDE 属性
  • 支持向 install 添加运行时的依赖项和工件
  • 新增 PROJECT_IS_TOP_LEVEL 和 <PROJECT-NAME>_IS_TOP_LEVEL
  • find_ 指令在缓存方面的改进

CMake 3.22:方便的环境变量

一个较小的版本,在常见的构建方面进行了一些不错的改进。可以在开发环境中设置 CMAKE_BUILD_TYPE 来设置默认的构建类型,还有其他几个新环境变量和变量的添加。与标准相关的编译器标志进行了改进。cmake_host_system_information 在操作系统信息方面得到了进一步的改进(从 3.10 开始)。

  • 首次发布于 2021年11月18日
  • 新的默认环境变量 CMAKE_BUILD_TYPE 和 CMAKE_CONFIGURATION_TYPES
  • 新增环境变量 CMAKE_INSTALL_MODE 用于安装类型(symlink)
  • 新增 CMAKE_REQUIRE_FIND_PACKAGE_<PackageName>变量,将可选查找转换为必选查找
  • 新增针对编译器的 CMAKE_<LANG>_EXTENSIONS_DEFAULT 变量
  • CMakeDependentOption 可使用正常的条件语法
  • CTest 可以修改环境变量
  • 一些生成器可以在使用 MSVC 时包含外部(系统)头文件

CMake 3.23:纯头文件库

一个可靠的版本,只关注头文件库,更多的用户控件,CMake 预设,以及更好的 CUDA 支持。纯头文件库有一些强大的新特性,比如:各种 *_SETS 目标属性。有一些新的控件,可以限制 find_ 查找路径,以及从现有目标中删除 SYSTEM。还可以获得了扩展的调试特性,以及将所有链接强制指向目标。预设可以包括其他文件。CUDA 和C# 部分进行了更新,并添加了几个编译器。

  • 首次发布于 2022年3月29日
  • CMake 预设的改进,可以包含其他文件。
  • 两个新的编译器,以及更好的 C# 支持。
  • FILE_SET 可用于 install 和 target_sources 纯头文件库。
  • <INTERFACE_>HEADER_SETS<INTERFACE_>HEADER_DIRS 为目标头文件。
  • 新增 CUDA_ARCHITECTURES 对 all 和 all-major.a 的支持
  • 可以为 find_* 或 find 模块启用 DEBUG 消息。
  • define_property() 新增了 INITIALIZE_FROM_VARIABLE 选项。
  • CMAKE_<SYSTEM_>IGNORE_PREFIX_PATH 可以控制 find_* 的查找路径。
  • 新增 <CMAKE_>LINK_LIBRARIES_ONLY_TARGETS 强制只链接目标(非常适合查找错误!)
  • IMPORTED_NO_SYSTEM 可强制从目标中删除 SYSTEM 的新属性。
  • FindGTest 在找到 GMock 目标的情况下,会添加 GMock 目标。

CMake 3.24:包查找器

一个很棒的版本。软件包编写者正在实现find_packageFetchContent的集成,这可以完成“丢失时下载”的工作,并且可以由软件包编写者配置。类似地,作为错误的警告可以由包设置,也可以由打包器删除(最好不要这样做,除非当前项目作为主项目构建!)。

  • 首次发布于 2022年8月4日
  • --fresh 选项在运行时可删除旧缓存。
  • find_package 和 FetchContent 现在集成在一起了 —— 可以选择下载缺失的依赖项。
  • find_package 新增 GLOBAL 选项。
  • CMAKE_PROJECT_TOP_LEVEL_INCLUDES 允许用户(像打包器一样)注入项目代码。
  • 生成器表达式可管理 PATH
  • 新增 CMAKE_COLOR_DIAGNOSTICS 环境变量和变量,取代 CMAKE_COLOR_MAKEFILE
  • 可以禁用 find_* 搜索安装前缀(目录)。
  • 新增 COMPILE_WARNING_AS_ERROR 属性和 CMAKE_ 变量,可使用 --compile-no-warning-as-error禁用。
  • CUDA 支持对当前检测到的 GPU 进行 native 编译。
  • SYSTEM 的包含路径可以在 MSVC 生成器上使用。
  • 更好地支持 MSVC,XCode 等 IDE 。
  • 支持 LLVMFlang 编译器。

CMake 3.25:块作用域和 SYSTEM

新增块作用域指令,可有选择地控制变量和策略,对 SYSTEM 也有更多的控制。可以在find_指令中使用 VALIDATOR 选项,并且工作流程也进行了升级。

  • 首次发布于 2022年11月16日
  • 支持 C++26
  • CUDA 的 nvcc 可以使用 LTO
  • 新增了工作流预设和包预设。
  • SYSTEM 可作为目录属性添加到 add_subdirectory 和 FetchContent
  • block()/endblock() 用于策略/变量范围, return() 中新增 PROPOGATE 选项
  • 添加了 BSD 和 LINUX 变量
  • find_* 新增 VALIDATOR 选项。
  • 新增的 SYSTEM 目标/目录属性和 EXPORT_NO_SYSTEM,同样用于 FetchContent 。

CMake开发中:WIP(Work In Process)

  • FindPython 可以生成正确的 PyPy SOABI(终于!)

标签:CMake,生成器,新增,支持,添加,CUDA,版本
From: https://www.cnblogs.com/itfanr/p/18027107

相关文章

  • nvm安装版本错误或无法切换版本问题
    如果无法正常使用nvmuse版本号切换版本的原因是因为部分电脑不能兼容淘宝源settings.txt文件内只需要root:D:\install\nvmpath:D:\install\nodejs第二行的install\nodejs是在他下面创建的nodejs文件夹不需要网络上面配置的node_mirror:https://npm.taobao.org/mirror......
  • 【更新公告】AirtestIDE更新至1.2.17版本
    1.前言本次更新为AirtestIDE、Airtest-Selenium库更新。AirtestIDE更新至1.2.17版本,AirtestIDE内置库Airtest更新为1.3.3.1版本,Poco更新为1.0.94版本,主要支持了selenium4.0以上版本,ADB更换为41版本,Airtest新增点击和滑动的相对坐标支持,Poco修复了1.0.93运行效率缓慢的问题等......
  • 东方红锁车版本死机问题分析
    现象:与东方红ecu交互过程中,程序进入hardfault异常;查找过程:方式1、通过keil软件调试功能,在hardfault处打断点,查看callstack窗口。callstack窗口处,有函数调用过程,但全是freertos系统函数调用,没有自己定义的函数,系统函数是没问题的,故想通过查看callstack窗口查找问题行不通了;方......
  • Linux-Source Insight添加系统库路径
    1、在BASE项目下添加Project->OpenProject,打开Base项目2、打开PreferencesProject->Preferences,选择SymbolLookups选项卡3、打开ImportSymbolsforAllProjects4、打开右侧Add按钮,弹出AddExternalSymbols对话框5、打开ImportfromanINCLUDEpath6、将需要添加的......
  • 1.1 如何选择Python版本
    简介Python是一门解释型高级语言,支持伪编译可以把Python源程序转换为字节码来优化程序和提高运行速度,支持使用py2exe、py2app、cx_Freeze或pyinstaller工具将Python程序打包为不同平台上的可执行程序,可以在没有安装Python解释器和相关依赖包的系统中运行Python支持多版本并存......
  • Android家庭记账本开发第六天:添加功能的设计
    我们现在已经讲完了数据库操作,适配器操作和页面跳转操作,现在我们来处理页面跳转之后的逻辑我们这个家庭记账本主要实现了基本的增删改查功能,这里我们先从增加入手:还记得我们在activity_main当中我们在布局中有一个增加按钮并为其设定了一个点击函数android:onClick="addAcco......
  • nvm:npm和node版本冲突以及淘宝证书过期导致的错误
    1.问题1.ERROR:npmv10.4.0isknownnottorunonNode.jsv14.7.0.Thisversionofnpmsupportsthefollowingnodeversions:^18.17.0||>=20.5.0.2.Couldnotretrievehttps://npm.taobao.org/mirrors/node/latest/SHASUMS256.txt2.解决2.1问题一:npm和Node版本......
  • 查看Linux内核版本的命令
    方法一:命令:uname-a作用:查看系统内核版本号及系统名称方法二:命令:cat/proc/version作用:查看目录"/proc"下version的信息,也可以得到当前系统的内核版本号及系统名称补充说明:/proc文件系统,它不是普通的文件系统,而是系统内核的映像,也就是说,该目录中的文件是存放在系统内存之中的......
  • 如何安装多个版本的node,再也不用担心版本高低引发的一系列问题
    简介最近好多人都问到node怎么同时安装多个版本?如何配置node的环境变量,如何自如的在多个版本中切换node?还有就是自己在做appium自动化的时候,有时候会因为node的版本过高或者是太低用命令启动appium时候而报错,试了一下是否可以安装一个高版本和低版本的node在一个系统中,你......
  • 安装指定版本Angular Cli
    在运行ngserve的时候会报错ng不是内部命令,这是因为你的node环境上没有安装angular/cli。安装指定版本AngularCli1、卸载旧版本angularnpmuninstall-g@angular/cli2、清楚缓存,确保卸载干净npmcacheclean--force3、检查是否卸载干净ng-v如果出现版本号则说明未......