Issues about linking external static libraries to Unreal

We are working on a C++ Game project for a time and we abide the MVC pattern as a project group. We used to depend on our own Rendering Engine for the (View) part but now we would like to see how Unreal would fit into our project.

The model of our project is composed of various DLL files that handle game logic, physics, networking etc. These DLLs have their respective header and lib files and they are all linked statically. These DLLs also depend on other third party libraries which again are linked statically.

I figured out that linking these DLLS can be achieved in the “.Build.cs” file. And therefore I’have written the necessary C# code within the Build.cs file to add include paths and libraries to my own Unreal Project module.

But I have several issues about linking and I hope to find answers here:

  1. Is there an API documentation of the UnrealBuildTool? I need to see what methods and variables are available to me in the ModuleRules class for instance.

  2. There may be various copies of the same library (that I would like to link) depending on the build config and platform target it was build for. These copies reside in their respective folders. Is there a way to get the current build config (i.e. DebugGameEditor etc) and platform (Win64/32) within the Build.cs file so that I can automatically change which DLLs are included to the project depending on project configuration. Otherwise I have to manually change the Build.cs file every time I would like to build my Unreal Project.

  3. It seems like Unreal Engine’s default working directory is set to the Binary directory of the Engine SDK when the project is executed from the editor. Some of my DLLs do file operations that depend on their own working directory (basically where the DLL resides). I am restricted from changing their code as these DLLs are shared by multiple projects. Is there are way to change the working path of the Unreal Editor without breaking the unreal itself. Or how can this problem be solved efficiently?

Thanks a lot for your answers in advance.