Cmake 实践Cmake 实践 Cmake Practice --Cjacker 前言: cmake 已经开发了 5,6 年的时间,如果没有 KDE4,也许不会有人或者 Linux 发行版 本重视 cmake,因为除了 Kitware 似乎没有人使用它。通过 KDE4 的选型和开发,cmake 逐渐进入了人们的视线,在实际的使用过程中,cmake 的优势也逐渐的被大家所认识,至 少 KDE 的开发者们给予了 的开发者们给予了 cmake 极高的评价,同时庞大的 KDE 项目使用 cmake 来作为构 建工具也证明了 cmake 的可用性和大项目管理能力。 所以,cmake 应该感谢 KDE,也正因为如此,cmake 的开发者投入了 KDE 从 autotools 到 cmake 的迁移过程中,并相当快速和顺利的完成了迁移,现在整个 KDE4 开 发版本全部使用 cmake 构建。 这也是促使我们学习 这也是促使我们学习 cmake 的原因,首先 cmake 被接受并成功应用,其次,cmake 的优势在实际使用中不断的体现出来。 我们为什么不来认识一下这款优秀的工程构建工具呢? 在 2006 年 KDE 大会,听 cmake 开发者当面介绍了 cmake 之后,我就开始关注 cmake,并将 cmake 纳入了 Everest 发行版,作为系统默认组件。最近 QT-4.3 也正式进0 码力 | 47 页 | 264.27 KB | 1 年前3
C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南现代 CMake 进阶指南 by 彭于斌( @archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 为什么要学习现代 CMake ? • 现代 CMake 指的是 CMake 3.x 。 • 古代 CMake 指的是 CMake CMake 2.x 。 • 通过互联网和学校课程,许多人认识的 CMake 都是古代 CMake 。 • 现代 CMake 和古代 CMake 相比,使用 更方便,功能更强大。 为什么要学习现代 CMake ? 现代 CMake : 古代 CMake : 第 0 章:命令行小技巧 传统的 CMake 软件构建 / 安装方式 • mkdir build • cd build build • cmake .. • make -j4 • sudo make install • cd .. • 需要先创建 build 目录 • 切换到 build 目录 • 在 build 目录运行 cmake < 源码目录 > 生成 Makefile • 执行本地的构建系统 make 真正开始构建( 4 进程并 行) • 让本地的构建系统执行安装步骤 • 回到源码目录 现代0 码力 | 166 页 | 6.54 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 01 学 C++ 从 CMake 学起学 C++ 从 CMake 学起 by 彭于斌( @archibate ) 高性能并行编程与优化 - 课程大纲 • 分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 1.课程安排与开发环境搭建: cmake 与 git 入门 2.现代 C++ 入门:常用 STL 容器, RAII 内存管理 3.现代 C++ 进阶:模板元编程与函数式编程 4.编译器如何自动优化:从汇编角度看 位时代过去了) 至少 2 核 4 线程(并行课…) 英伟达家显卡( GPU 专题) 软件要求: Visual Studio 2019 ( Windows 用户) GCC 9 及以上( Linux 用户) CMake 3.12 及以上(跨平台作业) Git 2.x (作业上传到 GitHub ) CUDA Toolkit 10.0 以上( GPU 专题) 关于作者 • 我是 Taichi 编译器的贡献者之一( 构建系统的构建系统( CMake ) • 为了解决 make 的以上问题,跨平台的 CMake 应运而生! • make 在 Unix 类系统上是通用的,但在 Windows 则不然。 • 只需要写一份 CMakeLists.txt ,他就能够在调用时生成当前系统所支持的构建系统。 • 需要准确地指明每个项目之间的依赖关系,有头文件时特别头疼。 • CMake 可以自动检测源文件和头文件之间的依赖关系,导出到0 码力 | 32 页 | 11.40 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 16 现代 CMake 模块化项目管理指南现代 CMake 模块化项目管理指南 彭于斌( @archibate ) 课件 & 源码: https://github.com/parallel101/course 往期录播: https://space.bilibili.com/263032155 找不到头文 件怎么办呀 CMake Cookbook 小彭老师建议 : ~~-·~·~-·~ -~·-·~·- 第一章:文件 / / 目录组织规范 基于 CMake 的 C/C++ 项目,如何优雅地、模块化地组织大量源文件 ? 推荐的目录组织方式 • 目录组织格式: • 项目名 /include/ 项目名 / 模块名 .h • 项目名 /src/ 模块名 .cpp • CMakeLists.txt 中写: • target_include_directories( 项目名 PUBLIC include) • 源码文件中写: myvar 不会自动更新,还是旧的那几个文件,可能出现 undefined symbol ,需要重新运行 cmake -B build 才能更新。 • 加了,则每次 cmake --build 时自动检测目录是否更新,如果目录有新文件了, CMake 会自动帮你重新运行 cmake -B build 更新 myvar 变量。 六、头文件和源文件的一一对应关系 • 通常每个头文件都有一个对应的源文件,两个文件名字应当相同0 码力 | 56 页 | 6.87 MB | 1 年前3
Debian 维护者指南. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 5.18.2 CMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 5.18.3 Autotools(单个二进制文件) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 8.10 CMake(单个二进制软件包) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 8.11 Autotools(多个二进制软件包) Autotools(多个二进制软件包) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 8.12 CMake(多个二进制软件包) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 8.13 国际化 . . . . .0 码力 | 142 页 | 1.11 MB | 1 年前3
Kicad 5.1 插件为了构建演示项目,我们需要以下内容: CMake KiCad 插件头 KiCad 场景图库 ‘kicad_3dsg’ 要开始,让我们创建一个项目目录和 FindPackage 脚本: mkdir demo && cd demo export DEMO_ROOT=${PWD} mkdir CMakeModules && cd CMakeModules cat > FindKICAD.cmake << _EOF find_path( 要配置和构建教程代码,我们将使用 CMake 并创建一个 ‘CMakeLists.txt’ 脚本 文件: cd ${DEMO_ROOT} cat > CMakeLists.txt << _EOF # 声明项目名称 # declare the name of the project project( PLUGIN_DEMO ) # 检查我们是否有具有所有必需功能的 CMake 版本 # check that version of CMake with all required features cmake_minimum_required( VERSION 2.8.12 FATAL_ERROR ) # 通知 CMake 何处可以找到 FindKICAD 脚本 # inform CMake of where to find the FindKICAD script set( CMAKE_MODULE_PATH0 码力 | 56 页 | 49.46 KB | 1 年前3
C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程• 熟悉 STL 中的容器、函数模板等。 • 英伟达 GTX900 及以上显卡。 • CUDA 11 及以上。 • CMake 3.18 及以上。 我负责监督你学习 第 0 章: Hello, world! CMake 中启用 CUDA 支持 • 最新版的 CMake ( 3.18 以上),只需在 LANGUAGES 后面加上 CUDA 即可启用 。 • 然后在 add_executable 通常都是一些可以内联的函数,数学计 算表达式之类的,一个个加上太累了,所以产生了这个 需求。 • 不过必须指定 --expt-relaxed-constexpr 这个选项才能 用这个特性,我们可以用 CMake 的生成器表达式来实 现只对 .cu 文件开启此选项(不然给到 gcc 就出错 了)。 • 当然, constexpr 里没办法调用 printf ,也不能用 __syncthreads nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#extended-notation 针对不同的架构,使用不同的代码 通过 CMake 设置架构版本号 • 可以用 CMAKE_CUDA_ARCHITECTURES 这个变量 ,设置要针对哪个架构生成 GPU 指令码。 • 小彭老师的显卡是 RTX2080 ,他的版本号是 75 ,因 此最适合他用的指令码版本是0 码力 | 142 页 | 13.52 MB | 1 年前3
Kicad 5.1 插件为了构建演示项目,我们需要以下内容: • CMake • KiCad 插件头 • KiCad 场景图库‘kicad_3dsg’ 要开始,让我们创建一个项目目录和 FindPackage 脚本: mkdir demo && cd demo export DEMO_ROOT=${PWD} mkdir CMakeModules && cd CMakeModules cat > FindKICAD.cmake << _EOF 变量设置为指向包含 KiCad ‘include’和‘lib’目录的目录。对于 OS X,此 处显示的 FindPackage 脚本可能需要进行一些调整。 要配置和构建教程代码,我们将使用 CMake 并创建一个‘CMakeLists.txt’脚本文件: cd ${DEMO_ROOT} cat > CMakeLists.txt << _EOF # b'' 声 b''b'' 明 b''b'' b''b'' 的 b'' CMake b'' 版 b''b'' 本 b'' # check that we have a version of CMake with all required features cmake_minimum_required( VERSION 2.8.12 FATAL_ERROR ) # b'' 通 b''b'' 知 b'' CMake b'' 何 b''b''0 码力 | 45 页 | 612.98 KB | 1 年前3
Krita 4.x 官方文档中文版 2021-08-06Aid=48234] 。(Windows 10 已经预装) Python 2 和 3 Krita 默认为 Python 3 进⾏编译。 要为 Python 2 进⾏编译,把下⾯的参数添加到 Krita 的 cmake 配 置: -DENABLE_PYTHON_2=ON Krita Python 插件编写教程 你可能已经编写了⼀些可以在 Python 脚本⼯具中运⾏的脚本,但 你说不定还想进⼀步扩展其功能,并且让它随 此项指定该插件的⽂件夹名称。 X-Python-2-Compatible 指定是否兼容 Python 2。例⼦中此项为 false (否),如果 Krita 是为 Python 2 ⽽不是 3 进⾏编译 (cmake 配置参数为 - DENABLE_PYTHON_2=ON ),那么 false 意味着此插件不会在 Krita ⾥⾯ 显⽰。 X-Krita-Manual 此项为可选参数,它指向该插件配套的使⽤⼿册项⽬。它会被 数位板⽀持 动画功能 洋葱⽪视图问题 程序崩溃 其他可被快速解决的问题 给技术⽀持⼈员的建议 指导⽤⼾分享⽂件 Technical Pages Building Krita from Source CMake Settings for Developers Enable static analyzer Introduction to Hacking Krita Krita SVG Extensions0 码力 | 1594 页 | 110.95 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 02 现代 C++ 入门:RAII 内存管理com/parallel101/course 高性能并行编程与优化 - 课程大纲 • 分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 1.课程安排与开发环境搭建: cmake 与 git 入门 2.现代 C++ 入门:常用 STL 容器, RAII 内存管理 3.现代 C++ 进阶:模板元编程与函数式编程 4.编译器如何自动优化:从汇编角度看 C++ 5.C++11 位时代过去了) 至少 2 核 4 线程(并行课…) 英伟达家显卡( GPU 专题) 软件要求: Visual Studio 2019 ( Windows 用户) GCC 9 及以上( Linux 用户) CMake 3.12 及以上(跨平台作业) Git 2.x (作业上传到 GitHub ) CUDA Toolkit 10.0 以上( GPU 专题) 从一个案例看 C++ 的历史 • 求一个列表中所有数的和: 深入理解计算机原理 (CSAPP)](http://csapp.cs.cmu.edu/) - [CMake “ 菜谱” ](https://www.bookstack.cn/read/CMake-Cookbook/README.md) - [CMake 官方文档 ](https://cmake.org/cmake/help/latest/) - [Git 官方文档 ](https://git-scm.com/doc)0 码力 | 96 页 | 16.28 MB | 1 年前3
共 77 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8













