[UE4]Project.Build.cs配置示例(UE4引用libuv静态链接库)

这个例子演示了如何链接libuv静态库相关的配置。

libuv版本是v1.8

// Fill out your copyright notice in the Description page of Project Settings.

using System.IO;
using UnrealBuildTool;

public class HuaiKXSrv : ModuleRules
{
    private string ModulePath
    {
        get { return Path.GetDirectoryName(RulesCompiler.GetModuleFilename(this.GetType().Name)); }
    }

    private string ThirdPartyPath
    {
        get { return Path.GetFullPath(Path.Combine(ModulePath, "../../ThirdParty/")); }
    }


    public HuaiKXSrv(TargetInfo Target)
	{
		PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });

		PrivateDependencyModuleNames.AddRange(new string[] {  });

        // Uncomment if you are using Slate UI
        // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });

        // Uncomment if you are using online features
        // PrivateDependencyModuleNames.Add("OnlineSubsystem");
        // if ((Target.Platform == UnrealTargetPlatform.Win32) || (Target.Platform == UnrealTargetPlatform.Win64))
        // {
        //		if (UEBuildConfiguration.bCompileSteamOSS == true)
        //		{
        //			DynamicallyLoadedModuleNames.Add("OnlineSubsystemSteam");
        //		}
        // }

        AddDefines(Target);

        LoadLibuv(Target);
    }

    public void AddDefines(TargetInfo Target)
    {
        if ((Target.Platform == UnrealTargetPlatform.Win32) || (Target.Platform == UnrealTargetPlatform.Win64))
        {
            Definitions.Add("_IS_WINDOWS_");
        }
        else
        {
            Definitions.Add("_IS_LINUX_");
        }
    }

    //链接libuv
    public bool LoadLibuv(TargetInfo Target)
    {
        bool isLibrarySupported = false;

        //libuv需要的系统lib
        PublicAdditionalLibraries.Add("IPHLPAPI.lib");
        PublicAdditionalLibraries.Add("Psapi.lib");
        PublicAdditionalLibraries.Add("userenv.lib");
        PublicAdditionalLibraries.Add("msvcrtd.lib");

        if (Target.Configuration == UnrealTargetConfiguration.Debug || Target.Configuration == UnrealTargetConfiguration.DebugGame)
        {
            if ((Target.Platform == UnrealTargetPlatform.Win64) || (Target.Platform == UnrealTargetPlatform.Win32))
            {
                isLibrarySupported = true;

                string PlatformString = (Target.Platform == UnrealTargetPlatform.Win64) ? "D.x64" : "D.x86";
                string LibrariesPath = Path.Combine(ThirdPartyPath, "Libuv", "Libraries");

                string LibuvLibPath = Path.Combine(LibrariesPath, "libuv" + PlatformString + ".lib");
                PublicAdditionalLibraries.Add(LibuvLibPath);
                System.Console.WriteLine("#### Set Debug Libuv Libraries ####:" + LibuvLibPath);
            }
        }
        else if (Target.Configuration == UnrealTargetConfiguration.Shipping || Target.Configuration == UnrealTargetConfiguration.Development)
        {
            if ((Target.Platform == UnrealTargetPlatform.Win64) || (Target.Platform == UnrealTargetPlatform.Win32))
            {
                isLibrarySupported = true;

                string PlatformString = (Target.Platform == UnrealTargetPlatform.Win64) ? "x64" : "x86";
                string LibrariesPath = Path.Combine(ThirdPartyPath, "Libuv", "Libraries");

                string LibuvLibPath = Path.Combine(LibrariesPath, "libuv." + PlatformString + ".lib");
                PublicAdditionalLibraries.Add(LibuvLibPath);
                System.Console.WriteLine("#### Set Shipping Libuv Libraries ####:" + LibuvLibPath);
            }
        }

        if (isLibrarySupported)
        {
            System.Console.WriteLine("#### Set Libuv Includes ####:" + Path.Combine(ThirdPartyPath, "Libuv", "Includes"));
            // Include path
            PublicIncludePaths.Add(Path.Combine(ThirdPartyPath, "Libuv", "Includes"));
        }

        //Definitions.Add(string.Format("WITH_BOBS_MAGIC_BINDING={0}", isLibrarySupported ? 1 : 0));

        return isLibrarySupported;
    }
}

猜你喜欢

转载自aigo.iteye.com/blog/2286684
UE4
今日推荐