UMake/Discuss
Suggestions
Restart Button
Tarquin: It would be nice for the "compile failed" window to have a "start again" button – avoids having to restart the program or go back via options.
Compiling Multiple Packages
DJPaul: Can this thing re-compile multiple packages AT ONCE?
Mychaeel: It's not designed to, or at least the frontend isn't. I think compiling multiple packages at once is not a very common task though.
Wormbo: You'd have to add the additional packages to the project in UMake, but if you want to recompile them then you'll have to delete them manually. I recommend creating multiple projects for that though.
Dependency List Management
Unknown: Would it be possible for the Dependencies list in the Project tab to have some way of "uncheck all below this" and "check all above this"?
Succes/Failed, but where is the warning?
Daid303: How about an option that does something (something else then succes) on a succesfull compile with warnings, because most of the time you do want to fix your warnings. And the UCC with the runtime engine nevers shows up 'X errors' it thinks all errors are warnings for some reason.
Extra command line option
Daid303: wouldn't it be nice to have an option to give extra commands to UCC, like -Debug.
Support for UT2004's -mod feature
Wormbo: This is somewhat related to the "Extra command line option" suggestion above, but may be worth mentioning on its own. The -mod
parameter implies certain changes in the directory structure of the source code (as opposed to compiling without -mod
) UMake doesn't handle yet, I think.
Bugs
Cache export seems to break something here
The new UT2004 version (3270) seems to have problems with UCC. Because of the automatic cache export.
WORKAROUND:
Open the make.ini in your project directory and add the line
CacheRecordPath=*.ucl
in the [Core.System] section.
Project Tab and Long Package Names
Tarquin: Project tab: "The options on this tab only affect the ..." text runs off the screen with long package names.
Errors Outside the Compiled Package
El Muerte TDS: somewhat of a bug, when you make a mistake in a other package, on what the current package depends the edit button will try open that file from the current package (which mostlikely won't exist)
Mychaeel: Normally UMake will extract the full file name from the "ucc make" log and simply use that. In a few cases the compiler doesn't provide a full file name but only a class name; in those cases UMake tries to guess the name of the .uc file using the class name and the current package name. I could improve that algorithm though by using the name of the last package the compiler started to process (I simply didn't think of the possibility that there could be an error in a different package than the one that's being compiled).
El Muerte TDS: you could also check if the file event exists in the current package
Mychaeel: That's right. I'll keep that in mind for the next version.
Warnings About Missing Import Files
Wormbo: When compiling a UT project I got a compiler warning about a texture that couldn't be imported. UMake correctly displayed that warning and the corresponding script file, but the Edit button opens the next script file parsed.
GPF after successfull compilation with UT2004 v3197 (and later)
Wormbo: From beta patch v3197 and onward, the Make commandlet automatically runs the ExportCache commandlet as well. When compiling with UMake, this part causes a General Protection Fault because the [Core.System] section of the UMake project ini file entry is missing the line
CacheRecordPath=../System/*.ucl
The compiled U file is saved correctly, though.
And while I'm at it, adding Suppress=DevLoad and Suppress=DevSave to the [Core.System] section as well wouldn't hurt in UT2004.
Warnings about unused or obscured variables, structs and enums
Wormbo: The warnings UCC displays about unused or obscured variables or obscured structs or enums aren't displayed in the Warnings tab.
Now when they are the cause of a compiler error (e.g. "type mismatch in =" on a line with "A = B;", where A is of type thisClass.SomeStruct and B is of type parentClass.SomeStruct) it's pure luck to find them because UMake switches to the "Errors" tab without showing the warnings.
Questions and Problems
Aborting UCC
El Muerte TDS: Mychaeel, how did you implement the "abort" feature of umake ? I'm working on a `ucc server` wrapper to make my debugging a bit easier. But I can't get to shutdown the server proberly, I've tried that winapi method to send a ^C but it doesn't work for some reason.
Mychaeel: Under Windows NT/2000/XP, UMake simply closes the console window. Under Windows 9x/ME, it uses keybd_event to send VK_CONTROL and VK_CANCEL key press and release events. – But even though that works, there's another pitfall with "ucc": It doesn't abort cleanly. A Visual C++ error dialog appears when the program is aborted (happens when you do it manually too), so I wrapped the "ucc make" process in a pseudo-debugging environment which handles the program abortion exception in ucc's stead.
UCC User Interaction
AlphaOne: I have a problem with UMake (probably due to my code). When umake starts compiling my subclass of Tab_InstantActionBaseRules (myRulesTab) UMake stops responding as if it was in an infinite loop. When I try the same code with UCC I get the following:
Importing Defaults for myRulesTab The file '..\mypackage\Inc\myPackageClasses.h' needs to be updated. Do you want to overwrite the existing version? (Y/N):
If I say Y then it gives me:
Error exporting Class Core.Object: couldn't open file '..\mypackage\Inc\myPackageClasses.h' Failure - 1 error(s), 0 warning(s)
If I say N then it compiles without errors. Other than that the code runs fine (I think). – So, what should I do? What is the problem? I don't think my class has any probles. I could post the code.
Mychaeel: Sounds like you're having a superfluous "native" somewhere (otherwise the compiler would not ask for updating a .h file). By the way, you should see the same message when clicking "Details," and by clicking "Abort" you should always be able to close UMake when that happens.
AlphaOne: What does superfluous native mean? The problem with UMake is that in MY case clicking Abort does NOT abort. In fact the only way to close UMake is to kill it! That's the reason why I went to UCC. Anyways, Someone else gave me that code and it compiles fine for that person. Moreover, if I choose the "N" option in UCC then the code compiles perfectly and works fine as well. I just want UMake not to hang on me like this.
Mychaeel: The problem is that "ucc" asks for user interaction, and UMake doesn't support that. (There's a switch in UT2003's "ucc" to suppress any user interaction. UMake doesn't use it, but could in a possible future version – just to be sure.)
The actual problem is in the code you're compiling though. Normally the compiler doesn't require any user interaction, and that request about creating "myPackageClasses.h" is a strong indication that something is in that UnrealScript code that shouldn't be there – namely a reference to native code via the "native" keyword. Since mod makers have no means to actually create native code to work with UnrealScript code, any "native" in the UnrealScript code is bound to be out of place. I can only guess, but maybe your coder just copied some of Epic's code without really understanding it and thus got a superfluous "native" into what actually should be pure UnrealScript code.
If that's not it, send me your .uc file to mychaeel@beyondunreal.com and I'll look into the problem more closely.
AlphaOne: Thanks a bunch! Some of the code did have a native class declaration. I didn't realise that someonelse's file was in the package, so I didn't bother to look there until I searched for the word "native" in ALL of my classes! Anyways, UMake is a wonderful program!
Ferazel2001: Wow... im so glad theres an alternitave to UDE... I thought I was stuck with either that or UnrealEd, Now that I have gotten EditPlus and UMake set up, life is really looking up! Thanks for the great app!
Code
Blip2: Was this written in VB5/6/ or .net?
Wormbo: It was written in Delphi. No idea about the version, though.