

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Erstellen einer einfachen Anwendung mit dem AWS SDK for C\$1\$1
<a name="build-cmake"></a>

 [CMake](https://cmake.org/)ist ein Build-Tool, mit dem Sie die Abhängigkeiten Ihrer Anwendung verwalten und Makefiles erstellen können, die für die Plattform geeignet sind, auf der Sie aufbauen. Sie können es verwenden CMake , um Projekte mit dem zu erstellen und zu erstellen. AWS SDK für C\$1\$1

In diesem Beispiel werden die Amazon S3 S3-Buckets gemeldet, die Sie besitzen. Für dieses Beispiel ist es nicht erforderlich, einen Amazon S3 S3-Bucket in Ihrem AWS Konto zu haben, aber es ist weitaus interessanter, wenn Sie mindestens einen haben. Falls Sie noch [keinen Bucket haben, finden Sie weitere Informationen unter Bucket erstellen](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html) im *Amazon Simple Storage Service-Benutzerhandbuch*.

## Schritt 1: Schreiben Sie den Code
<a name="setting-up-a-cmake-project"></a>

Dieses Beispiel besteht aus einem Ordner mit einer Quelldatei (`hello_s3.cpp`) und einer `CMakeLists.txt` Datei. Das Programm verwendet Amazon S3, um Speicher-Bucket-Informationen zu melden. Dieser Code ist auch im [AWS Codebeispiel-Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/s3/hello_s3) unter verfügbar GitHub. 

Sie können viele Optionen in einer `CMakeLists.txt` Build-Konfigurationsdatei festlegen. Weitere Informationen finden Sie im [CMakeTutorial](https://cmake.org/cmake-tutorial/) auf der CMake Website. 

**Anmerkung**  
Deep Dive: Einstellung `CMAKE_PREFIX_PATH`  
Standardmäßig ist das AWS SDK für C\$1\$1 auf MacOS, Linux, Android und anderen Nicht-Windows-Plattformen in `/usr/local` und unter Windows installiert. `\Program Files (x86)\aws-cpp-sdk-all`  
Wenn Sie das AWS SDK an diesen Standardspeicherorten installieren, findet es CMake automatisch die erforderlichen Ressourcen. Wenn Sie das AWS SDK jedoch an einem benutzerdefinierten Speicherort installieren, müssen Sie angeben, CMake wo sich die folgenden Ressourcen befinden, die sich aus der Erstellung des SDK ergeben:  
`AWSSDKConfig.cmake`: Eine Konfigurationsdatei, die erklärt, CMake wie Sie die AWS SDK-Bibliotheken in Ihrem Projekt finden und verwenden können. Ohne diese Datei CMake können Sie keine AWS SDK-Header-Dateien finden, keine Links zu AWS SDK-Bibliotheken herstellen oder die richtigen Compiler-Flags einrichten.
(für Version 1.8 und früher) Der Speicherort der Abhängigkeiten:`aws-c-event-stream`,, `aws-c-common` `aws-checksums`
So legen Sie einen benutzerdefinierten Installationspfad fest:  

```
cmake -DCMAKE_PREFIX_PATH=/path/to/your/aws-sdk-installation /path/to/project/you/are/building
```
Wenn Sie keine benutzerdefinierte Installation festlegen`CMAKE_PREFIX_PATH`, schlägt Ihr Build fehl und es werden Fehler wie „Konnte nicht gefunden AWSSDK“ angezeigt, wenn CMake versucht wird, `find_package(AWSSDK)` in Ihrem zu verarbeiten`CMakeLists.txt`.

**Anmerkung**  
Tiefer Einblick: Windows-Runtime-Bibliotheken  
Um Ihr Programm auszuführen, DLLs sind mehrere im ausführbaren Verzeichnis Ihres Programms erforderlich:`aws-c-common.dll`,,`aws-c-event-stream.dll`,`aws-checksums.dll`,`aws-cpp-sdk-core.dll`, sowie alle spezifischen, auf den Komponenten Ihres Programms DLLs basierenden Daten (dieses Beispiel erfordert auch, `aws-cpp-sdk-s3` weil es Amazon S3 verwendet). Die zweite `if` Anweisung in der `CMakeLists.txt` Datei kopiert diese Bibliotheken vom Installationsverzeichnis in das Verzeichnis der ausführbaren Datei, um diese Anforderung zu erfüllen. `AWSSDK_CPY_DYN_LIBS`ist ein durch definiertes Makro AWS SDK für C\$1\$1 , das die SDKs DLLs vom Installationsverzeichnis in das Verzeichnis der ausführbaren Datei Ihres Programms kopiert. Wenn sich diese Dateien nicht im Verzeichnis der ausführbaren Datei DLLs befinden, treten Laufzeitausnahmen wie „Datei nicht gefunden“ auf. Überprüfen Sie diesen Teil der `CMakeLists.txt` Datei auf notwendige Änderungen für Ihre spezielle Umgebung, falls Sie auf diese Fehler stoßen.

**Um den Ordner und die Quelldateien zu erstellen**

1. Erstellen Sie ein `hello_s3` and/or Verzeichnisprojekt für Ihre Quelldateien.
**Anmerkung**  
Um dieses Beispiel in Visual Studio zu vervollständigen: Wählen Sie **Neues Projekt erstellen** und dann **CMake Projekt**. Benennen Sie das Projekt `hello_s3`. Dieser Projektname wird in der `CMakeLists.txt` Datei verwendet.

1. Fügen Sie in diesem Ordner eine `hello_s3.cpp` Datei hinzu, die den folgenden Code enthält, der die Amazon S3 S3-Buckets meldet, die Sie besitzen.

   ```
   #include <aws/core/Aws.h>
   #include <aws/s3/S3Client.h>
   #include <iostream>
   #include <aws/core/auth/AWSCredentialsProviderChain.h>
   using namespace Aws;
   using namespace Aws::Auth;
   
   /*
    *  A "Hello S3" starter application which initializes an Amazon Simple Storage Service (Amazon S3) client
    *  and lists the Amazon S3 buckets in the selected region.
    *
    *  main function
    *
    *  Usage: 'hello_s3'
    *
    */
   
   int main(int argc, char **argv) {
       Aws::SDKOptions options;
       // Optionally change the log level for debugging.
   //   options.loggingOptions.logLevel = Utils::Logging::LogLevel::Debug;
       Aws::InitAPI(options); // Should only be called once.
       int result = 0;
       {
           Aws::Client::ClientConfiguration clientConfig;
           // Optional: Set to the AWS Region (overrides config file).
           // clientConfig.region = "us-east-1";
                  
           // You don't normally have to test that you are authenticated. But the S3 service permits anonymous requests, thus the s3Client will return "success" and 0 buckets even if you are unauthenticated, which can be confusing to a new user. 
           auto provider = Aws::MakeShared<DefaultAWSCredentialsProviderChain>("alloc-tag");
           auto creds = provider->GetAWSCredentials();
           if (creds.IsEmpty()) {
               std::cerr << "Failed authentication" << std::endl;
           }
   
           Aws::S3::S3Client s3Client(clientConfig);
           auto outcome = s3Client.ListBuckets();
   
           if (!outcome.IsSuccess()) {
               std::cerr << "Failed with error: " << outcome.GetError() << std::endl;
               result = 1;
           } else {
               std::cout << "Found " << outcome.GetResult().GetBuckets().size()
                         << " buckets\n";
               for (auto &bucket: outcome.GetResult().GetBuckets()) {
                   std::cout << bucket.GetName() << std::endl;
               }
           }
       }
   
       Aws::ShutdownAPI(options); // Should only be called once.
       return result;
   }
   ```

1. Fügen Sie eine `CMakeLists.txt` Datei hinzu, die den Namen Ihres Projekts, die ausführbaren Dateien, die Quelldateien und die verknüpften Bibliotheken angibt. 

   ```
   # Set the minimum required version of CMake for this project.
   cmake_minimum_required(VERSION 3.13)
   
   # Set the AWS service components used by this project.
   set(SERVICE_COMPONENTS s3)
   
   # Set this project's name.
   project("hello_s3")
   
   # Set the C++ standard to use to build this target.
   # At least C++ 11 is required for the AWS SDK for C++.
   set(CMAKE_CXX_STANDARD 11)
   
   # Use the MSVC variable to determine if this is a Windows build.
   set(WINDOWS_BUILD ${MSVC})
   
   if (WINDOWS_BUILD) # Set the location where CMake can find the installed libraries for the AWS SDK.
       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 ()
   
   # Find the AWS SDK for C++ package.
   find_package(AWSSDK REQUIRED COMPONENTS ${SERVICE_COMPONENTS})
   
   if (WINDOWS_BUILD AND AWSSDK_INSTALL_AS_SHARED_LIBS)
       # Copy relevant AWS SDK for C++ libraries into the current binary directory for running and debugging.
   
       # set(BIN_SUB_DIR "/Debug") # if you are building from the command line you may need to uncomment this
       # and set the proper subdirectory to the executables' location.
   
       AWSSDK_CPY_DYN_LIBS(SERVICE_COMPONENTS "" ${CMAKE_CURRENT_BINARY_DIR}${BIN_SUB_DIR})
   endif ()
   
   add_executable(${PROJECT_NAME}
           hello_s3.cpp)
   
   target_link_libraries(${PROJECT_NAME}
           ${AWSSDK_LINK_LIBRARIES})
   ```

## Schritt 2: Erstellen mit CMake
<a name="building-with-cmake"></a>

CMake verwendet die darin enthaltenen Informationen`CMakeLists.txt`, um ein ausführbares Programm zu erstellen.

Wir empfehlen, die Anwendung gemäß den Standardverfahren für Ihre IDE zu erstellen.

**Um die Anwendung über die Befehlszeile zu erstellen**

1. Erstellen Sie ein Verzeichnis, in dem Ihre Anwendung erstellt **`cmake`**werden soll.

   ```
   mkdir my_project_build
   ```

1. Wechseln Sie in das Build-Verzeichnis und führen Sie es **`cmake`**mit dem Pfad zum Quellverzeichnis Ihres Projekts aus.

   ```
   cd my_project_build
   cmake ../
   ```

1. Nachdem Sie Ihr Build-Verzeichnis **`cmake`**generiert haben, können Sie **`make`**(oder **`nmake`**unter Windows) oder MSBUILD (`msbuild ALL_BUILD.vcxproj`oder`cmake --build . --config=Debug`) verwenden, um Ihre Anwendung zu erstellen.

## Schritt 3: Ausführen
<a name="run-app"></a>

Wenn Sie diese Anwendung ausführen, zeigt sie eine Konsolenausgabe an, in der die Gesamtzahl der Amazon S3 S3-Buckets und der Name jedes Buckets aufgeführt sind.

Wir empfehlen, die Anwendung gemäß den Standardmethoden für Ihre IDE auszuführen.

**Anmerkung**  
Denken Sie daran, sich anzumelden\$1 Wenn Sie IAM Identity Center zur Authentifizierung verwenden, denken Sie daran, sich mit dem AWS CLI `aws sso login` folgenden Befehl anzumelden.

**Um das Programm über die Befehlszeile auszuführen**

1. Wechseln Sie in das Debug-Verzeichnis, in dem das Ergebnis des Builds generiert wurde. 

1. Führen Sie das Programm mit dem Namen der ausführbaren Datei aus.

   ```
   hello_s3
   ```

Weitere Beispiele für die AWS SDK für C\$1\$1 Verwendung von finden Sie unter[Geführte Beispiele für Aufrufe AWS-Services mit dem AWS SDK for C\$1\$1](programming-services.md).