- Added build configurations
- Configured csprojects - CopyLibs functionality in builder
This commit is contained in:
@ -25,6 +25,8 @@ public class Builder : IDisposable
|
||||
Stopwatch stopwatch = new Stopwatch();
|
||||
stopwatch.Start();
|
||||
|
||||
CopyLibs(args.ProjectPath);
|
||||
|
||||
List<string> contentFiles = args.ContentFiles;
|
||||
string absContentPath = $"{args.ProjectPath}/{PathUtil.ContentFolderName}";
|
||||
|
||||
@ -91,6 +93,34 @@ public class Builder : IDisposable
|
||||
Console.WriteLine($"Build content completed in {stopwatch.Elapsed.TotalSeconds:F2} seconds");
|
||||
}
|
||||
|
||||
private void CopyLibs(string projectPath)
|
||||
{
|
||||
string libDir = $"{Directory.GetCurrentDirectory()}/../../Native/";
|
||||
if (OperatingSystem.IsWindows())
|
||||
{
|
||||
libDir += "x64";
|
||||
}
|
||||
else if (OperatingSystem.IsLinux())
|
||||
{
|
||||
libDir += "lib64";
|
||||
}
|
||||
else if (OperatingSystem.IsMacOS())
|
||||
{
|
||||
libDir += "osx";
|
||||
}
|
||||
|
||||
libDir = Path.GetFullPath(libDir);
|
||||
foreach (string libFile in Directory.EnumerateFiles(libDir))
|
||||
{
|
||||
FileInfo srcFileInfo = new FileInfo(libFile);
|
||||
FileInfo dstFileInfo = new FileInfo($"{projectPath}/{PathUtil.BuildFolderName}/{Path.GetFileName(libFile)}");
|
||||
if (FileUtil.IsNewer(srcFileInfo, dstFileInfo))
|
||||
{
|
||||
FileUtil.Copy(srcFileInfo, dstFileInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void CollectAssetFiles(string assetDir, string dir, ref List<string> files)
|
||||
{
|
||||
foreach (string file in Directory.EnumerateFiles(dir))
|
||||
|
@ -2,9 +2,16 @@ namespace Nerfed.Builder;
|
||||
|
||||
public static class FileUtil
|
||||
{
|
||||
public static void Copy(string srcFile, string dstFile) {
|
||||
public static void Copy(FileInfo srcFile, FileInfo dstFile)
|
||||
{
|
||||
Copy(srcFile.FullName, dstFile.FullName);
|
||||
}
|
||||
|
||||
public static void Copy(string srcFile, string dstFile)
|
||||
{
|
||||
string dstDir = Path.GetDirectoryName(dstFile);
|
||||
if(!Directory.Exists(dstDir)) {
|
||||
if (!Directory.Exists(dstDir))
|
||||
{
|
||||
Directory.CreateDirectory(dstDir);
|
||||
}
|
||||
|
||||
@ -12,12 +19,14 @@ public static class FileUtil
|
||||
UpdateFileTimeAttributes(dstFile);
|
||||
}
|
||||
|
||||
public static void WriteBytes(string dstFile, byte[] bytes) {
|
||||
public static void WriteBytes(string dstFile, byte[] bytes)
|
||||
{
|
||||
File.WriteAllBytes(dstFile, bytes);
|
||||
UpdateFileTimeAttributes(dstFile);
|
||||
}
|
||||
|
||||
public static void UpdateFileTimeAttributes(string file) {
|
||||
public static void UpdateFileTimeAttributes(string file)
|
||||
{
|
||||
// Copy over date time attributes so we can check if the file changed.
|
||||
FileInfo dstFileInfo = new FileInfo(file);
|
||||
DateTime now = DateTime.Now;
|
||||
@ -33,7 +42,8 @@ public static class FileUtil
|
||||
/// <summary>
|
||||
/// True if the inFileInfo is newer than the outFileInfo.
|
||||
/// </summary>
|
||||
public static bool IsNewer(FileInfo inFileInfo, FileInfo outFileInfo) {
|
||||
public static bool IsNewer(FileInfo inFileInfo, FileInfo outFileInfo)
|
||||
{
|
||||
return !outFileInfo.Exists || outFileInfo.LastWriteTime <= inFileInfo.LastWriteTime;
|
||||
}
|
||||
}
|
||||
|
@ -6,14 +6,20 @@
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>disable</Nullable>
|
||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
<IsPackable>false</IsPackable>
|
||||
<Configurations>Debug;Test;Release</Configurations>
|
||||
<Platforms>x64</Platforms>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||
<OutputPath>../Tools</OutputPath>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
||||
<OutputPath>../Tools</OutputPath>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Test|x64' ">
|
||||
<Optimize>true</Optimize>
|
||||
</PropertyGroup>
|
||||
|
||||
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
|
||||
<Optimize>true</Optimize>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
@ -3,7 +3,8 @@ namespace Nerfed.Builder;
|
||||
public static class PathUtil
|
||||
{
|
||||
public const string ImportedFileExtension = ".bin";
|
||||
public const string BuildFolderName = ".build";
|
||||
public const string ImportFileExtension = ".import";
|
||||
public const string ImportFolderName = "Import";
|
||||
public const string ImportFolderName = $"{BuildFolderName}/Import";
|
||||
public const string ContentFolderName = "Content";
|
||||
}
|
||||
|
Reference in New Issue
Block a user