

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS SDK for C\$1\$1 ビルドの問題のトラブルシューティング
<a name="troubleshooting-cmake"></a>

ソース AWS SDK for C\$1\$1 から を構築する場合、次のような一般的なビルドの問題が発生する可能性があります。

**Topics**
+ [CMake エラー: 「AWSSDK」によって提供されるパッケージ設定ファイルが見つかりませんでした](#could-not-find-package)
+ [CMake エラー: ロードファイルが見つかりませんでした (現在の SDK バージョンは 1.8 です)](#could-not-load-file)
+ [CMake エラー: ロードファイルが見つかりませんでした](#could-not-load-file2)
+ [ランタイムエラー: `aws-*.dll` が見つからなかったため処理を続行できません](#dll-was-not-found)

## CMake エラー: 「AWSSDK」によって提供されるパッケージ設定ファイルが見つかりませんでした
<a name="could-not-find-package"></a>

インストールされた SDK が見つからない場合、CMake は次のエラーを表示します。

```
1> [CMake] CMake Error at C:\CodeRepos\CMakeProject1\CMakeLists.txt:4 (find_package):
1> [CMake]   Could not find a package configuration file provided by "AWSSDK" with any
1> [CMake]   of the following names:
1> [CMake] 
1> [CMake]     AWSSDKConfig.cmake
1> [CMake]     awssdk-config.cmake
1> [CMake] 
1> [CMake]   Add the installation prefix of "AWSSDK" to CMAKE_PREFIX_PATH or set
1> [CMake]   "AWSSDK_DIR" to a directory containing one of the above files.  If "AWSSDK"
1> [CMake]   provides a separate development package or SDK, be sure it has been
1> [CMake]   installed.
```

このエラーを解決するには、CMake に SDK のインストール先 (例: [Windows](setup-windows.md)、[Linux/macOS](setup-linux.md)) を指定します。`CMakeLists.txt` ファイルで最初に `find_package()` を呼び出す前に、次のコマンドを挿入します。例については、「[AWS SDK for C\$1\$1 を使用したシンプルなアプリケーションの作成](build-cmake.md)」を参照してください。

```
list(APPEND CMAKE_PREFIX_PATH "C:\\Program Files (x86)\\aws-cpp-sdk-all\\lib\\cmake")
```

## CMake エラー: ロードファイルが見つかりませんでした (現在の SDK バージョンは 1.8 です)
<a name="could-not-load-file"></a>

インストールされたライブラリが見つからない場合、CMake は次のエラーを表示します。

```
1> [CMake]   include could not find load file:
1> [CMake] 
1> [CMake]     C:/Program Files (x86)/aws-cpp-sdk-all/lib/aws-c-common/cmake/static/aws-c-common-targets.cmake

1> [CMake]   include could not find load file:
1> [CMake] 
1> [CMake]     C:/Program Files (x86)/aws-cpp-sdk-all/lib/aws-checksums/cmake/static/aws-checksums-targets.cmake
1> [CMake]   include could not find load file:
1> [CMake] 
1> [CMake]     C:/Program Files (x86)/aws-cpp-sdk-all/lib/aws-checksums/cmake/static/aws-checksums-targets.cmake
```

このエラーを解決するには、CMake に SDK のインストール先 (例: [Windows](setup-windows.md)、[Linux/macOS](setup-linux.md)) を指定します。`CMakeLists.txt` ファイルで最初に `find_package()` を呼び出す前に、次のコマンドを挿入します。例については、「[AWS SDK for C\$1\$1 を使用したシンプルなアプリケーションの作成](build-cmake.md)」を参照してください。

```
#Set the location of where Windows can find the installed libraries of the SDK.
if(MSVC)
    string(REPLACE ";" "/aws-cpp-sdk-all;" SYSTEM_MODULE_PATH "${CMAKE_SYSTEM_PREFIX_PATH}/aws-cpp-sdk-all")
    list(APPEND CMAKE_PREFIX_PATH ${SYSTEM_MODULE_PATH})
endif()
```

この解決策は SDK バージョン 1.8 専用です。これより前のバージョンでは依存関係の扱いが異なります。バージョン 1.9 では、`aws-sdk-cpp` ライブラリと `aws-c-*` ライブラリの間に中間レイヤーを導入することで、これらの問題に対処しています。この新しいレイヤーは `aws-crt-cpp` という名前で、SDK for C\$1\$1 の git サブモジュールです。`aws-crt-cpp` は `aws-c-*` ライブラリ (`aws-c-common`、`aws-checksums`、` aws-c-event-stream`など) も独自の git サブモジュールとして含んでいます。これにより、SDK for C\$1\$1 はすべての CRT ライブラリを再帰的に取得でき、ビルドプロセスが改善されます。

## CMake エラー: ロードファイルが見つかりませんでした
<a name="could-not-load-file2"></a>

インストールされたライブラリが見つからない場合、CMake は次のエラーを表示します。

```
CMake Error at C:/Program Files (x86)/aws-cpp-sdk-all/lib/aws-c-auth/cmake/aws-c-auth-config.cmake:11 
         (include):  include could not find load file:   
         C:/Program Files (x86)/aws-cpp-sdk-all/lib/aws-c-auth/cmake/static/aws-c-auth-targets.cmake
```

このエラーを解決するには、CMake に共有ライブラリをビルドするように指定します。`CMakeLists.txt` ファイルで最初に `find_package()` を呼び出す前に、次のコマンドを挿入します。例については、「[AWS SDK for C\$1\$1 を使用したシンプルなアプリケーションの作成](build-cmake.md)」を参照してください。

```
set(BUILD_SHARED_LIBS ON CACHE STRING "Link to shared libraries by default.")
```

## ランタイムエラー: `aws-*.dll` が見つからなかったため処理を続行できません
<a name="dll-was-not-found"></a>

必要な DLL が見つからない場合、CMake は次のようなエラーを表示します。

```
The code execution cannot proceed because aws-cpp-sdk-[dynamodb].dll was not found. Reinstalling the program may fix this problem.
```

このエラーは、SDK for C\$1\$1 に必要なライブラリまたは実行可能ファイルがアプリケーションの実行可能ファイルと同じフォルダにないため発生します。このエラーを解決するには、SDK のビルド出力をアプリケーションの実行可能ファイルのある場所にコピーします。エラーの特定の DLL ファイル名は、使用している AWS サービスによって異なります。次の*いずれか*を行います。
+  AWS SDK for C\$1\$1 インストールの `/bin`フォルダの内容をアプリケーションのビルドフォルダにコピーします。
+ `CMakeLists.txt` ファイル内でマクロ AWSSDK\$1CPY\$1DYN\$1LIBS を使用すると、これらのファイルを自動でコピーできます。

  このマクロを使用するには、`AWSSDK_CPY_DYN_LIBS(SERVICE_LIST "" ${CMAKE_CURRENT_BINARY_DIR})` または `AWSSDK_CPY_DYN_LIBS(SERVICE_LIST "" ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE})` の呼び出しを `CMakeLists.txt` ファイルに追加します。例については、「[AWS SDK for C\$1\$1 を使用したシンプルなアプリケーションの作成](build-cmake.md)」を参照してください。

  ビルド環境に合った正しいコピー先パスを選択してください。コマンドラインからのビルドでは出力がサブフォルダ (`/Debug`) に配置されることが多いですが、Visual Studio やその他の IDE ではそうとは限りません。出力された実行可能ファイルの場所を確認し、マクロが正しい場所にコピーしていることを確認してください。この種の変更を行う際は、ビルド出力ディレクトリの内容を削除して、次回のビルドをクリーンな状態から開始することをお勧めします。