[FR] ProJucer save without overwriting local JUCE modules

So I have a few small changes in the JUCE modules for my project.

In ProJucer I have it set to copy the JUCE (and some of my own) modules to the project using “Make Local Copy”.

The problem is that if I then want to add additional files to the project in ProJucer and I re-Save… it overwrites my Local Copies.

Could there be an option during the Save in ProJucer that if there are any Local Copies defined and the local copies exist… that we get prompted as to whether to overwrite the local copy on the current save…



… It should however overwrite any BinaryData.*, etc. files :slight_smile:



Hello to the JUCE team ! Hello @jules and @ed95 !

I think this feature should be added in the Projucer because it is very important for people doing continuous integration. This way, we can have local copies of JUCE in every maintained project repository, several developers can work with the Projucer without the need for them to have all the same version of JUCE, and we don’t need to update every product every single time we would change the global JUCE version on the CI server.

So, could it be possible to add an option such as “set all modules to copy locally but without replacing them if they already exist” in the modules configuration ? It would solve all the issues I currently have with CI

Thanks in advance !

I’ve been dealing with CI a lot lately and I would tend to advise the opposite…

My general rule these days is that you should have a single script per repo that can be called from a fresh clone and that is able to generate all your projects, build them and then run any tests etc.

It’s basically essential that everyone using a repo is using the exact same version of JUCE otherwise you’re likely to be constantly making breaking changes. With this in mind, using a submodule is by far the simplest solution. If you use a shallow clone, it will be relatively quick and not take up too much disk space.

It’s also much nicer if you’re working with others to say “clone this and then run this script” than have to separately clone juce, point PJ projects to a special location etc.
It also means you can simply trash the local repo and re-clone to get back exactly what is being built by everybody else :slight_smile:


Ha ! I think using submodules might be the solution for my problems, without any need to change Projucer behaviour. Thanks for sharing your workflow :wink:

Yeah submodules are the way to go. I now basically make all my code into submodules that can be shared across multiple projects — makes CI much easier.

1 Like

Can this be moved to the Feature Request forum?