

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 下载并配置 C\+\+ 制作器库代码
<a name="producersdk-cpp-download"></a>

有关如何下载和配置 C\+\+ 制作人库的信息，请参阅 [Amazon Kinesis Video Streams CPP Producer GStreamer 、Plugin 和 JNI](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp)。

有关此示例的先决条件和更多信息，请参阅[使用 C\+\+ 制作人库](producer-sdk-cpp.md)。

## CMake 争论
<a name="cmake-arguments"></a>

以下是 C\+\+ Producer SDK 专用参数 CMake 的参考表。您也可以将[标准 CMake 选项](https://cmake.org/cmake/help/latest/manual/cmake-env-variables.7.html)传递给。 CMake 

**重要**  
这些都是可选的。

**用于包括或排除某些功能的标志**


| CMake 争论 | Type | 默认 | 说明 | 
| --- | --- | --- | --- | 
| `BUILD_DEPENDENCIES` |  布尔值  |  ON  | 从源代码构建依赖关系。否则，请使用系统上已安装的依赖项。如果找不到所需的依赖项之一，则将返回错误。 | 
| `BUILD_GSTREAMER_PLUGIN` | 布尔值 |  OFF  | 构建kvssink GStreamer 插件。 | 
|  `BUILD_JNI`  | 布尔值 |  OFF  | 构建 Java 原生接口 (JNI)，以便能够从 Java 运行时环境中调用此代码。 | 
|  `ALIGNED_MEMORY_MODEL`  | 布尔值 |  OFF  | 内存分配是否应与 8 字节边界对齐。某些架构不允许进行未对齐的内存访问。 | 
| `CONSTRAINED_DEVICE` | 布尔值 |  OFF  | 仅限非 Windows。启用时，将线程堆栈大小设置为0.5 MiB。[Alpine Linux](https://wiki.alpinelinux.org/wiki/Main_Page) 版本需要使用。否则，将使用操作系统的默认值。 | 
|  `BUILD_STATIC`  | 布尔值 |  OFF  | 将库和可执行文件构建为[共享](https://en.wikipedia.org/wiki/Shared_library) (OFF) 或[静态](https://en.wikipedia.org/wiki/Static_library) (ON)。 | 
|  `ADD_MUCLIBC`  | 布尔值 |  OFF  | 链接到 [ucLib](https://en.wikipedia.org/wiki/UClibc) c 而不是标准 C 库，后者是专为嵌入式系统设计的小型 C 标准库。 | 
|  `OPEN_SRC_INSTALL_PREFIX`  |  字符串  | .. /开源/本地 | 安装开源依赖项的位置（如果从源代码构建）。 | 

**交叉编译标志**

**重要**  
如果您的目标计算机和主机 CPU 架构不同，请设置这些架构。


| CMake 争论 | Type | 默认 | 说明 | 
| --- | --- | --- | --- | 
| `BUILD_LOG4CPLUS_HOST` |  字符串  |  ""  | 为指定的 CPU 架构构建log4cplus依赖关系。如果未设置，log4cplus将自动检测并使用主机的 CPU 架构。 | 
| `BUILD_OPENSSL_PLATFORM`  |  字符串  |  ""  | 为指定的 CPU 架构构建OpenSSL依赖关系。如果未设置，OpenSSL将自动检测并使用主机的 CPU 架构。 | 

**与测试相关的标志**


| CMake 争论 | Type | 默认 | 说明 | 
| --- | --- | --- | --- | 
| `BUILD_TEST` |  布尔值  |  OFF  | 构建单元测试和集成测试。要运行所有测试，请./tst/producerTest从 build 目录运行。 AWS 需要凭据才能运行测试。 | 
| `CODE_COVERAGE` | 布尔值 | OFF | 仅适用于 GNU/Clang 编译器。使用 [gcov](https://gcc.gnu.org/onlinedocs/gcc/Gcov.html) 和报告生成启用代码覆盖率收集。 | 
| `COMPILER_WARNINGS` | 布尔值 | OFF | 仅适用于 GNU/Clang 编译器。启用所有编译器警告。 | 
| `ADDRESS_SANITIZER` | 布尔值 | OFF | 仅适用于 GNU/Clang 编译器。使用... 构建[AddressSanitizer](https://compiler-rt.llvm.org/)。 | 
| `MEMORY_SANITIZER` | 布尔值 | OFF | 仅适用于 GNU/Clang 编译器。使用... 构建[MemorySanitizer](https://compiler-rt.llvm.org/)。 | 
| `THREAD_SANITIZER` | 布尔值 | OFF | 仅适用于 GNU/Clang 编译器。使用... 构建[ThreadSanitizer](https://compiler-rt.llvm.org/)。 | 
| `UNDEFINED_BEHAVIOR_SANITIZER` | 布尔值 | OFF | 仅适用于 GNU/Clang 编译器。使用... 构建[UndefinedBehaviorSanitizer](https://compiler-rt.llvm.org/)。 | 

要使用这些 CMake 参数，`cmake ..`请在命令后面将它们作为空格分隔的`-D{{key}}={{value}}`对列表传递。例如：

```
cmake .. -DBUILD_GSTREAMER_PLUGIN=ON -DBUILD_DEPENDENCIES=OFF -DALIGNED_MEMORY_MODEL=ON 
```

CMake 将通过跟随`$PATH`变量来寻找编译器工具链。在运行之前 CMake，请设置`CC`和`CXX`环境变量以显式设置用于交叉编译的工具链。