C++高性能并行编程与优化 - 课件 - 16 现代 CMake 模块化项目管理指南
set(key val PARENT_SCOPE) 才能修改到外面的变量。 第二章:第三方库 / 依赖项配置 用 find_package 寻找系统中安装的第三方库并链接他们 find_package 命令 • 常用参数列表一览: • find_package([version] [EXACT] [QUIET] [CONFIG] [MODULE] • nd_package.html find_package 命令用法举例 • find_package(OpenCV) • 查找名为 OpenCV 的包,找不到不报错,事后可以通过 ${OpenCV_FOUND} 查询是否找到。 • find_package(OpenCV QUIET) • 查找名为 OpenCV 的包,找不到不报错,也不打印任何信息。 • find_package(OpenCV cmake 进程,不再继续往下执行)。 • find_package(OpenCV REQUIRED COMPONENTS core videoio) • 查找名为 OpenCV 的包,找不到就报错,且必须具有 OpenCV::core 和 OpenCV::videoio 这 两个组件,如果没有这两个组件也会报错。 • find_package(OpenCV REQUIRED OPTIONAL_COMPONENTS 0 码力 | 56 页 | 6.87 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南
怎么路径里动不动夹杂几个转移符、空格、特殊符号?这谁顶得住啊 。 高情商: Windows 是最适合练习你 C 语言转移符使用水平的地方 。 更通用的方式: find_package 更好的做法是用 CMake 的 find_package 命令。 find_package(TBB REQUIRED) 会查找 /usr/lib/cmake/TBB/TBBConfig.cmake 这个配置文 件,并根据里面的配置信息创建时候是纯头文件,而 find_package(spdlog REQUIRED) 时却 变成预编译链接库的版本。(嗯,其实不是 PUBLIC 而是 INTERFACE ,因为伪对象没有实体) 和古代 CMake 做对比:为什么 PUBLIC 属性的传播机制如此便利 现代 CMake : 古代 CMake : 和 find_package(TBB CONFIG REQUIRED) REQUIRED) 有什么区别? 其实更好的是通过 find_package(TBB CONFIG REQUIRED) ,添加了一个 CONFIG 选项。 这样他会优先查找 TBBConfig.cmake (系统自带的)而不是 FindTBB.cmake (项目作者常 把他塞在 cmake/ 目录里并添加到 CMAKE_MODULE_PATH )。这样能保证寻找包的这个 .cmake 脚本是和系统自带的 tbb 0 码力 | 166 页 | 6.54 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 01 学 C++ 从 CMake 学起
引用系统中预安装的第三方库 • 可以通过 find_package 命令寻找系统中的包 / 库: • find_package(fmt REQUIRED) • target_link_libraries(myexec PUBLIC fmt::fmt) • 为什么是 fmt::fmt 而不是简单的 fmt ? • 现代 CMake 认为一个包 (package) 可以提供多个库,又称组件 (components) 还挺像的) 。 • 你可以指定要用哪几个组件: • find_package(TBB REQUIRED COMPONENTS tbb tbbmalloc REQUIRED) • target_link_libraries(myexec PUBLIC TBB::tbb TBB::tbbmalloc) 第三方库 - 常用 package 列表 1. fmt::fmt 2. spdlog::spdlog OpenVDB::openvdb 6. Boost::iostreams 7. Eigen3::Eigen 8. OpenMP::OpenMP_CXX • 不同的包之间常常有着依赖关系,而包管理器的作者为 find_package 编写的脚本(例如 /usr/lib/cmake/TBB/TBBConfig.cmake )能够自动查找所有依赖,并利用刚刚提 到的 PUBLIC PRIVATE 正确处理依赖项,比如如果你引用了0 码力 | 32 页 | 11.40 MB | 1 年前3Building Robot Apps
Barcelona The problem Level up Bluetooth Scan Connect Send Command s https:// www.npmjs.com/package/nativescript-bluet ooth Sending commands Service / Characteristics Sending commands Protocol • Reading commands Protocol Reading data Gotcha #2 aka Are you for real? https://www.npmjs.com/package/nativescript-mip-ble Show me the code V2 - Native SDK Taking it a step further0 码力 | 18 页 | 14.80 MB | 1 年前3Performance Lets dive into Performance issues
database is a prime example. Enabling Optimization Testing • npm i v8-natives --save • Edit your app/package.json • Add --allow-native-syntax to v8Flags V8 Natives • Docs: https://github.com/NathanaelA/v8-Natives0 码力 | 15 页 | 1.71 MB | 1 年前3陈东 - 利用Rust重塑移动应用开发-230618
- Signer - cryptography support - Blockchain Support - Publish each module as independent package 利用 Rust 重塑移动应用开发 Photo / image / chart RCC_Android 利用 Rust 重塑移动应用开发 - RCC_Andorid is an rust0 码力 | 22 页 | 2.10 MB | 1 年前3No Silver Bullet – Essence and Accident in Software Engineering
Manager for the development of the IBM System/360 family of computers and the OS/360 software package • In 1975, published The Mythical Man-Month: Essays on Software Engineering • In 1987, authored0 码力 | 35 页 | 1.43 MB | 5 月前3C++高性能并行编程与优化 - 课件 - 06 TBB 开启的并行编程之旅
,从而生成一个可执行文件供你运行。运行后会得到测试 的结果打印在终端上。 命令行参数 他还接受一些命令行参数来控制测试的输出格式为 csv 等等,你可以调用 --help 查看更多用法。 CMake 中使用: find_package CMake 中使用:作为子模块 这个什么“勾勾”公司非要默认开启 tests ,导致需要去寻找 googletest ,妨碍了我们作为子模块使用。 小彭老师单方面宣布:一切默认开启 tests0 码力 | 116 页 | 15.85 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化
r 自带莫顿序遍历功能 TBB 永远滴神,可惜这里用 stream 好像没有效果 ,而且没法保证对齐到 16 字节什么的…… CMake 小妙招分享 • 顺便分享一个小妙招: find_package 后面不加 REQUIRED ,这样找不到就不会报错。 • 然后用 TARGET TBB::tbb 判断是否找到了 tbb , 如果没找到抛出警告,但是不影响使用。如果找到就 链接上,并定义宏0 码力 | 147 页 | 18.88 MB | 1 年前3
共 9 条
- 1