micrograd++: A 500 line C++ Machine Learning Library0 码力 | 3 页 | 1.73 MB | 1 年前3
Back to Basics: The structure of a Program0 码力 | 64 页 | 390.34 KB | 1 年前3
C++高性能并行编程与优化 - 课件 - 01 学 C++ 从 CMake 学起重复写 g++ 命令(%.o: %.cpp)。 但坏处也很明显: 1. make 在 Unix 类系统上是通用的,但在 Windows 则不然。 2. 需要准确地指明每个项目之间的依赖关系,有头文件时特别头疼。 3. make 的语法非常简单,不像 shell 或 python 可以做很多判断等。 4. 不同的编译器有不同的 flag 规则,为 g++ 准备的参数可能对 MSVC 不适用。 Windows 则不然。 - 只需要写一份 CMakeLists.txt,他就能够在调用时生成当前系统所支持的构建系统。 - 需要准确地指明每个项目之间的依赖关系,有头文件时特别头疼。 • CMake 可以自动检测源文件和头文件之间的依赖关系,导出到 Makefile 里。 • make 的语法非常简单,不像 shell 或 python 可以做很多判断等。 • CMake 具有相对高级的语法,内置的函数能够处理 是不确定的,导致编译器无法确定 decay的 type 是一个类型,还是一个值。因此用 typename 修饰来让编译器确信这是一个类型名..... ## 为什么需要头文件 • 为了使用 hello 这个函数,我们刚才在 main.cpp 里声明了 void hello() 。 • 但是如果另一个文件 other.cpp 也需要用 hello 这个函数呢?也在里面声明一遍?0 码力 | 32 页 | 11.40 MB | 2 年前3
C++高性能并行编程与优化 - 课件 - 16 现代 CMake 模块化项目管理指南找不到头文件怎么办呀 CMake # 现代 CMake 模块化项目管理指南 彭于斌 (@archibate) 课件 & 源码:https://github.com/parallel101/course 往期录播:https://space.bilibili.com/263032155 ## 第一章:文件 / 目录组织规范 基于 CMake 的 C/C++ 项目,如何优雅地、模块化地组织大量源文件? directories(项目名 PUBLIC include) • 源码文件中写: • #include < 项目名 / 模块名 .h> • 项目名:: 函数名 (); ## 推荐的目录组织方式 - 头文件(项目名 /include/ 项目名 / 模块名 .h)中写: • #pragma once • namespace 项目名 { • void 函数名(); • } • 实现文件(项目名 /src/ biology 这个静态库对象,并通过 GLOB_RECRUSE 为他批量添加了所有位于 src 和 include 下源码和头文件。 - 根项目的 CMakeLists.txt 负责处理全局有效的设定。而子项目的 CMakeLists.txt 则仅考虑该子项目自身的设定,比如他的头文件目录,要链接的库等等。 file(GLOB_RECURSE srcs CONFIGURE_DEPENDS src/*0 码力 | 56 页 | 6.87 MB | 2 年前3
Cmake 实践各种安装指令以及 CMAKE_INSTALL_PREFIX 变量(你真够牛的,这么点东西居然罗唆了这么多文字) 在下一小节,我们将探讨如何在 cmake 中构建动态库和静态库,以及如何使用外部头文件和外部共享库,毕竟,这是程序编写中最长使用的(对了,你知道用怎样的 gcc 参数可以直接构建静态库和动态库吗?) ## 五 ,静态库与动态库构建 读者云,太能罗唆了,一个Hello World World的共享库。 ## 本节的任务: 1. 建立一个静态库和动态库,提供 HelloFunc 函数供其他程序编程使用,HelloFunc 向终端输出 Hello World 字符串。 2,安装头文件与共享库。 ## 一 ,准备工作: 在/backup/cmake 目录建立 t3 目录,用于存放本节涉及到的工程 二,建立共享库 cd /backup/cmake/t3 mkdir lib 目录会生成: libhello.so.1.2 libhello.so.1->libhello.so.1.2 libhello.so ->libhello.so.1 ## 六 ,安装共享库和头文件 以上面的例子,我们需要将 libhello.a,libhello.so.x 以及 hello.h 安装到系统目录,才能真正让其他人开发使用,在本例中我们将 hello 的共享库安装到/lib 0 码力 | 47 页 | 264.27 KB | 2 年前3
2019-2021 美团技术年货 前端篇方法从本地窗口对象 ANativeWindow 创建而来。对于鸿蒙而言,虽然我们没有从公开文档找到类似的说明,但是鸿蒙标准库默认支持了 OpenGL ES,而且鸿蒙 SDK 中也附带了 EGL 相关的库及头文件,我们有理由相信在鸿蒙系统上,EGLSurface 也可以通过此方法从前一步生成的 NativeLayer 转化而来,在之后的验证中我们也确认了这一点: // window->handle() Phases 里的 Header 的设置感到迷惑,可以直接从【揭开 Public、Private、Project 的真实面目】的章节开始阅读,这会让你理解为什么说 Private 并不是真正的私有头文件 - 如果你想了解如何通过 hmap 技术提升编译速度,可以从【基于 hmap 优化 Search Path 的策略】的章节开始阅读,这会给你提供一种新的编译加速思路。 - 如果你想了解如何通过 做的事情其实就是简单的复制粘贴,将目标 .h 文件中的内容一字不落地拷贝到当前文件中,并替换掉这句 #include,而 #import 实质上做的事情和 #include 是一样的,只不过它还多了一个能够避免头文件重复引用的能力而已。 为了更好的理解后面的内容,我们这里需要展开说一下它到底是如何运行的? 从最直观的角度来看: 假设在 MyApp.m 文件中,我们 #import 了 iAd.h 文件,编译器解析此文件后,开始寻找0 码力 | 738 页 | 50.29 MB | 2 年前3
跟我一起写 Makefile (PDF 重制版)File,这个动作叫做编译(compile)。然后再把大量的 Object File 合成可执行文件,这个动作叫作链接(link)。 编译时,编译器需要的是语法的正确,函数与变量的声明的正确。对于后者,通常是你需要告诉编译器头文件的所在位置(头文件中应该只是声明,而定义应该放在 C/C++ 文件中),只要所有的语法正 确,编译器就可以编译出中间目标文件。一般来说,每个源文件都应该对应于一个中间目标文件(.o 文件或 .obj 文件)。 个 c 文件,和 3 个头文件,我们要写一个 makefile 来告诉 make 命令如何编译和链接这几个文件。我们的规则是: 1. 如果这个工程没有编译过,那么我们的所有 c 文件都要编译并被链接。 2. 如果这个工程的某几个 c 文件被修改,那么我们只编译被修改的 c 文件,并链接目标程序。 3. 如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的 c 文件,并链接目标程序。 makefile 的主线和核心,但要写好一个 makefile 还不够,我会在后面一点一点地结合我的工作经验给你慢慢道来。内容还多着呢。:) ### 2.2 一个示例 正如前面所说,如果一个工程有 3 个头文件和 8 个 C 文件,为了完成前面所述的那三个规则,我们的 makefile 应该是下面的这个样子的。 edit : main.o kbd.o command.o display.o \ insert0 码力 | 81 页 | 628.51 KB | 2 年前3
C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南add_executable(main) 2 set(sources main.cpp other.cpp) 3 target_sources(main PUBLIC ${sources}) 建议把头文件也加上,这样在 VS 里可以出现在“Header Files”一栏 CMakeLists.txt 1 add_executable(main) 2 set(sources main.cpp other 置的 Windows 系统并不适用。 此外,他还要求 tbb 的头文件就在 /usr/include 这个系统默认的头文件目录,这样才能 #include不出错,如果 tbb 的头文件在其他地方就需要再加一个 target_include_directories 设置额外的头文件查找目录。 CMakeLists.txt main.cpp 1 add_executable(main 添加一些 PUBLIC 属性,用于让链接了他的对象带上一些 flag 之类的。 ## TBB::tbb 的秘密:自带了一些 PUBLIC 属性 比如,TBB 安装在 /opt/tbb 目录下,头文件在 /opt/tbb/include 里,那么这时 TBBConfig.cmake 里就会有: target include directories(TBB::tbb PUBLIC /opt/tbb/include) 0 码力 | 166 页 | 6.54 MB | 2 年前3
5_刘欣_Python在量化投资领域的应用SWIG的接口描述文件可以包含以下内容: 1. ANSI C函数原型声明 2. ANSI C 变量声明 3. SWIG指示器(directive)相关内容 SWIG可以直接接受 .h 头文件做为接口描述文件。在有了接口描述文件后,就可以利用 swig 命令生成包装代码了,然后将包装代码编译链接成可被其他语言调用的库。 相关内容 SWIG可以直接接受 .h 头文件做为接口描述文件。在有了接口描述文件后,就可以利用 swig 命令生成包装代码了,然后将包装代码编译链接成可被其他语言调用的库。 更新软件包列表。执行命令如下所示: root@Kali:~# apt-get update 输出结果如下所示: Binary 20130905-08:50] kali/non-free Translation-en 获取:1 http://mirrors.neusoft.edu.cn kali Release.gpg0 码力 | 444 页 | 25.79 MB | 2 年前3共 215 条- 1
- 2
- 3
- 4
- 5
- 6
- 22













