Level : WORDPRESS BOOK LINKEDIN PATENT Send Mail 동냥하기 hajunho.com

반응형

Sep, 2024 updated with ChatGPT-4o

// Copyright Epic Games, Inc. All Rights Reserved.

using UnrealBuildTool;

public class AudioMixerXAudio2 : ModuleRules
{
    public AudioMixerXAudio2(ReadOnlyTargetRules Target) : base(Target)
    {
       PrivateIncludePathModuleNames.Add("TargetPlatform");

       if (Target.bCompileAgainstEngine)
        {
          // Engine module is required for CompressedAudioInfo implementations.
            PrivateDependencyModuleNames.AddRange(
             new string[]
             {
                "Engine",
                "BinkAudioDecoder"
             }
          );

          AddEngineThirdPartyPrivateStaticDependencies(Target,
          "UEOgg",
          "Vorbis",
          "VorbisFile"
          );
        }
        PrivateDependencyModuleNames.AddRange(
          new string[] {
                "Core",
                "CoreUObject",
                "AudioMixer",
                "AudioMixerCore"
                }
       );

       PrecompileForTargets = PrecompileTargetsType.None;

       AddEngineThirdPartyPrivateStaticDependencies(Target,
          "DX11Audio",
          "XAudio2_9"
        );

       if (Target.Platform == UnrealTargetPlatform.Win64)
       {
          PrecompileForTargets = PrecompileTargetsType.Any;
       }
    }
}

This code is a build script for an Unreal Engine module named `AudioMixerXAudio2`. It uses UnrealBuildTool (UBT) which is part of the Unreal Engine build system to define the dependencies and compile rules for the module. Below is a detailed analysis of the code:

### Components of the Code

1. **Namespaces and Class Declaration**
   ```csharp
   using UnrealBuildTool;

   public class AudioMixerXAudio2 : ModuleRules
   {
       public AudioMixerXAudio2(ReadOnlyTargetRules Target) : base(Target)
       {
   ```

   - The script begins by importing the `UnrealBuildTool` namespace.
   - The `AudioMixerXAudio2` class inherits from `ModuleRules`, which is a standard method of defining build rules in Unreal Engine.
   - The constructor takes `ReadOnlyTargetRules Target` as an argument, which represents the target build configuration.

2. **Private Include Path Module Names**
   ```csharp
       PrivateIncludePathModuleNames.Add("TargetPlatform");
   ```
   
   - `PrivateIncludePathModuleNames` specifies other modules that this module needs for include paths but are not necessarily dependent on.

3. **Conditional Dependencies**
   ```csharp
       if (Target.bCompileAgainstEngine)
       {
           PrivateDependencyModuleNames.AddRange(
               new string[]
               {
                   "Engine",
                   "BinkAudioDecoder"
               }
           );

           AddEngineThirdPartyPrivateStaticDependencies(Target,
               "UEOgg",
               "Vorbis",
               "VorbisFile"
           );
       }
   ```
   
   - This section checks if the target should compile against the engine, and if so, adds dependencies such as "Engine" and "BinkAudioDecoder".
   - It also adds third-party static dependencies: "UEOgg", "Vorbis", and "VorbisFile" which are likely audio codecs or related libraries.

4. **General Dependencies**
   ```csharp
       PrivateDependencyModuleNames.AddRange(
           new string[] {
               "Core",
               "CoreUObject",
               "AudioMixer",
               "AudioMixerCore"
           }
       );
   ```
   
   - Adds general dependencies that are always needed regardless of whether the engine is being compiled against. These include core modules and audio handling modules.

5. **Precompile and Platform-Specific Dependencies**
   ```csharp
       PrecompileForTargets = PrecompileTargetsType.None;

       AddEngineThirdPartyPrivateStaticDependencies(Target,
           "DX11Audio",
           "XAudio2_9"
       );

       if (Target.Platform == UnrealTargetPlatform.Win64)
       {
           PrecompileForTargets = PrecompileTargetsType.Any;
       }
   ```
   
   - Sets the `PrecompileForTargets` to `PrecompileTargetsType.None`, indicating no precompilation by default.
   - Adds third-party dependencies specific to DirectX 11 Audio and XAudio2.9.
   - If the target platform is Win64, changes the precompilation setting to `PrecompileTargetsType.Any`, allowing for broader precompilation.

### Summary

- **Dependencies:** The module depends on core Unreal Engine modules (`Core`, `CoreUObject`, `Engine`, etc.) and additional audio-related modules and third-party libraries.
- **Conditional Compilation:** Some dependencies are conditionally included based on whether the engine will be compiled.
- **Platform-Specific Logic:** It accounts for the platform target (specifically Win64) to adjust precompilation settings accordingly.

This build script is well-structured to ensure that `AudioMixerXAudio2` has all the necessary components for different build configurations and platforms, focusing primarily on audio processing functionalities within Unreal Engine.

반응형

'3D world > Unreal Engine Plug-ins' 카테고리의 다른 글

NDI  (0) 2019.09.12
unreal + rider  (0) 2019.03.13
D3D11RHI  (0) 2019.03.13
WindowsPlatformFeatures  (0) 2019.02.18
메신저 서비스를 할 때 고려해야 할 점.  (0) 2019.01.07
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기