

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 下載並設定 C\$1\$1 生產者程式庫程式碼
<a name="producersdk-cpp-download"></a>

如需如何下載和設定 C\$1\$1 生產者程式庫的資訊，請參閱 [Amazon Kinesis Video Streams CPP Producer、GStreamer Plugin 和 JNI](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp)。

如需此範例的先決條件和詳細資訊，請參閱 [使用 C\$1\$1 生產者程式庫](producer-sdk-cpp.md)。

## CMake 引數
<a name="cmake-arguments"></a>

以下是 C\$1\$1 Producer SDK 特定 CMake 引數的參考表。您也可以將[標準 CMake 選項](https://cmake.org/cmake/help/latest/manual/cmake-env-variables.7.html)傳遞給 CMake。

**重要**  
這些都是選用的。

**包含或排除特定功能的旗標**


| CMake 引數 | Type | 預設 | 說明 | 
| --- | --- | --- | --- | 
| `BUILD_DEPENDENCIES` |  Boolean  |  ON  | 從來源建置相依性。否則，請使用已安裝在系統上的相依性。如果找不到其中一個必要的相依性，則會傳回錯誤。 | 
| `BUILD_GSTREAMER_PLUGIN` | Boolean |  OFF  | 建置 kvssink GStreamer 外掛程式。 | 
|  `BUILD_JNI`  | Boolean |  OFF  | 建置 Java 原生界面 (JNI)，以便能夠從 Java 執行時間環境呼叫此程式碼。 | 
|  `ALIGNED_MEMORY_MODEL`  | Boolean |  OFF  | 如果記憶體配置應對齊 8 位元組邊界。有些架構不允許未對齊的記憶體存取。 | 
| `CONSTRAINED_DEVICE` | Boolean |  OFF  | 僅限非 Windows。開啟時， 會將執行緒堆疊大小設定為 0.5 MiB。[Alpine Linux](https://wiki.alpinelinux.org/wiki/Main_Page) 組建需要。否則，會使用作業系統預設值。 | 
|  `BUILD_STATIC`  | Boolean |  OFF  | 將程式庫和可執行檔建置為[共用](https://en.wikipedia.org/wiki/Shared_library) (OFF) 或[靜態](https://en.wikipedia.org/wiki/Static_library) (ON)。 | 
|  `ADD_MUCLIBC`  | Boolean |  OFF  | 連結至 [uClibc](https://en.wikipedia.org/wiki/UClibc) 而非標準 C 程式庫，這是專為嵌入式系統設計的小型 C 標準程式庫。 | 
|  `OPEN_SRC_INSTALL_PREFIX`  |  String  | ../open-source/local | 如果從來源建置，安裝開放原始碼相依性的位置。 | 

**跨編譯的旗標**

**重要**  
如果您的目標和主機機器 CPU 架構不同，請設定這些架構。


| CMake 引數 | Type | 預設 | 說明 | 
| --- | --- | --- | --- | 
| `BUILD_LOG4CPLUS_HOST` |  String  |  ""  | 為指定的 CPU 架構建置log4cplus相依性。如果未設定， log4cplus會自動偵測並使用主機機器的 CPU 架構。 | 
| `BUILD_OPENSSL_PLATFORM`  |  String  |  ""  | 為指定的 CPU 架構建置OpenSSL相依性。如果未設定， OpenSSL會自動偵測並使用主機機器的 CPU 架構。 | 

**與測試相關的旗標**


| CMake 引數 | Type | 預設 | 說明 | 
| --- | --- | --- | --- | 
| `BUILD_TEST` |  Boolean  |  OFF  | 建置單元和整合測試。若要執行所有測試，./tst/producerTest請從建置目錄執行 。 AWS 需要登入資料才能執行測試。 | 
| `CODE_COVERAGE` | Boolean | OFF | 僅適用於 GNU/Clang 編譯器。使用 [gcov](https://gcc.gnu.org/onlinedocs/gcc/Gcov.html) 和產生報告來啟用程式碼涵蓋範圍集合。 | 
| `COMPILER_WARNINGS` | Boolean | OFF | 僅適用於 GNU/Clang 編譯器。啟用所有編譯器警告。 | 
| `ADDRESS_SANITIZER` | Boolean | OFF | 僅適用於 GNU/Clang 編譯器。使用 [AddressSanitizer](https://compiler-rt.llvm.org/) 建置 。 | 
| `MEMORY_SANITIZER` | Boolean | OFF | 僅適用於 GNU/Clang 編譯器。使用 [MemorySanitizer](https://compiler-rt.llvm.org/) 建置 。 | 
| `THREAD_SANITIZER` | Boolean | OFF | 僅適用於 GNU/Clang 編譯器。使用 [ThreadSanitizer](https://compiler-rt.llvm.org/) 建置 。 | 
| `UNDEFINED_BEHAVIOR_SANITIZER` | Boolean | OFF | 僅適用於 GNU/Clang 編譯器。使用 [UndefinedBehaviorSanitizer](https://compiler-rt.llvm.org/) 建置 。 | 

若要使用這些 CMake 引數，請依照 `cmake ..`命令以空格分隔的`-Dkey=value`配對清單傳遞這些引數。例如：

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

CMake 會遵循 `$PATH`變數尋找編譯器工具鏈。在執行 CMake 之前，請設定 `CC`和 `CXX`環境變數，以明確設定用於跨編譯的工具鏈。