Suggestions to make the modules and Introjucer experience better


#1

Hi there, i finally had some time to dig inside the new Introjucer and modules and i have to say it's pretty useful (i still prefer manually using premake4/scons by the time of writing, but it's a matter of personal taste).

What i encountered when writing some modules for the thirdparty libraries that have to be included in my introjucer project:

- there is no "defines" array in juce_module_info, so i have some defines that are strictly dependent on the library (not a Config variable), and without that the amalgamated library wouldn't even compile so the workaround is to manually add the define globally to the project defines (but i have to remember to set this in all the projects that will use that module).

- same thing for "includepaths", for example i'm packing luabind in a module and all the includes in the library look for other includes starting from a parent folder absolutely (<luabind/luabind.hpp> includes <luabind/config.hpp> even if it is in the same directory) but then i can't add an include path for the library (i have to manually modify all the includes!)

With those two small changes, you can pack whatever thirdparty library you want !


#2

Adding a "defines" flag is a good idea, thanks! Will do that.

Not sure about includes though.. These modules could be installed anywhere on any type of computer, so surely it'd make no sense for them to contain absolute paths?


#3

i do not want to specify absolute paths, but paths relative to the module folder that introjucer will expand in the generated makefiles/projects accordingly (depending on where the module folder is located).

this way it' easier for libraries that needs to set include paths starting from the root of the library package (which in turn is inside the module folder).

i think it sounds pretty sensible.


#4

FYI, I've given it a "defines" flag now - it should be a string of whitespace-separated XYZ=123 type defs (same as the format used for preprocessor defs in the config pages)