C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南
find_package(spdlog REQUIRED) 时却 变成预编译链接库的版本。(嗯,其实不是 PUBLIC 而是 INTERFACE ,因为伪对象没有实体) 和古代 CMake 做对比:为什么 PUBLIC 属性的传播机制如此便利 现代 CMake : 古代 CMake : 和 find_package(TBB CONFIG REQUIRED) 有什么区别? 其实更好的是通过 find_package(TBB 号, 例如” ${MYVAR}” ,这样就可以避免被 if 当做变量名来求值了。 第 10 章:变量与作用域 变量的传播规则:父会传给子 • 父模块里定义的变量,会传递给子模块。 变量的传播规则:子不传给父 • 但是子模块里定义的变量,不会传递给父模块。 变量的传播规则:子不传给父 • 如果父模块里本来就定义了同名变量,则离开子模块后仍保持父模块原来设置的值。 如果子模块需要向父模块里传变量怎么办? csdn.net/Calvin_zhou/article/details/104060927 环境变量的访问方式: $ENV{xx} • 用 ${xx} 访问的是局部变量,局部变量服从刚刚所说的父子模块传播规则。 • 而还有一种特殊的方式可以访问到系统的环境变量( environment variable ): $ENV{xx} 。 • 比如 $ENV{PATH} 就是获取 PATH 这个环境变量的值。0 码力 | 166 页 | 6.54 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串
find 应用案例:计算子字符串出现了多少次 官方文档对 find 的描述 https://en.cppreference.com/w/cpp/string/basic_string/find 反向查找 rfind • find 是从字符串头部开始查找,返回第一次出现的地方。 • 而 rfind 则是从尾部开始查找,返回最后一次出现的地方 。 • 例如 “ helloworld”.rfind(‘l’) find_first_not_of 寻找不在集合内的字符 举一反三: find_last_of 、 find_last_not_of • find 的反向版本是 rfind 。 • find_first_of 的反向版本是 find_last_of 。 • find_first_not_of 的反向版本是 find_last_not_of 。 replace 替换一段子字符串 • replace(pos, len, “str”)0 码力 | 162 页 | 40.20 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 01 学 C++ 从 CMake 学起
表示上一层目 录。 • 此外,如果不希望让引用 hellolib 的可执行文件自动添加这个路径,把 PUBLIC 改成 PRIVATE 即可。这就是他们的用途:决定一个属性要不要在被 link 的时候传播。 目标的一些其他选项 • 除了头文件搜索目录以外,还有这些选项, PUBLIC 和 PRIVATE 对他们同理: • target_include_directories(myapp PUBLIC0 码力 | 32 页 | 11.40 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化
。古有纸上谈兵,今有脑内编程 。 • 计算机编程又不是量子物理广义相对论,我们每个人都有电脑,做一下实验很容易,可总 有所谓的“老师”就不肯动动手敲几行命令(写 doc 文件倒挺勤的),在那里传播假知识。 • 在线做编译器实验推荐这个网站: https://godbolt.org/ • 可以实时看源代码编译的结果,还能选不同的编译器版本和 flag 。 • 不要脑内模拟!你误以为某更改0 码力 | 108 页 | 9.47 MB | 1 年前3
共 4 条
- 1