I use KiCad for all my PCB design needs - It has pretty much everything you need. Of course, Altium or Orcad may be way better at doing things, but you can get the same things done in KiCad, but may with a little less productivity, but hey, you get it for absolutely free. Cant ask for more!
Extra Libraries
99% of the time, you will need to make symbols or footprints of your own, for parts that are not available in the official KiCad repositories. When someone else needs to make some changes on it, then managing the project's libraries can get a bit tedious. This write up describes the optimal way (at least I think so) one can do that.
Whats the problem here?
So, the issue I'm trying to address here is that, when you add a library to your project, it can be added in two ways:
- Relative path
- Absolute path
The former is the most obvious choice when you want someone else to be able to work on the library easily. Otherwise, every time the other person updates the project, your KiCad installation will have hiccups finding the additional library.
The issue with relative path is that every time a new project is created, the library has to be manually copied to the project directory. This is not very ideal if, like me, you have the library in a separate git repo, as there will inconsistent version of library among different projects.
Another solution is to add a user defined search path for the project where the git repo of the library resides. But it needs to be done manually to the project file with all the collaborator's library absolute library path. This is because of the way KiCad handles user defined search path, as KiCad just removes any invalid search paths set by another user when you add your search path to the project file.
The Solution
Environment Variables to the rescue!
The best solution I've found out, involves a one-time setup per each user's installation for any number of projects.
Project Initiator
The first person who creates the project, should:
- Add the library in (relative path) from Eeschema's
Preferences -> Component Libraries
. Lets name itawesome-library
so that the file name becomesawesome-library.lib
- Open the
.pro
file in a text editor, replace the settingLibDir
toLibDir=${ENV_VAR}
. Choose a name of your choice, instead ofENV_VAR
. - Assume that the git repo of the library on the disk is
/path/to/awesome-library-git
- Open any KiCad project file (
.pro
extension) in KiCad - From the Project explorer, go to
Preferences -> Configure Paths
- Add a new environment variable, same as
ENV_VAR
, or the one you chose, with its value being the absolute path of the folder where.lib
and.dcm
files reside. Eg., if the actual library resides in/path/to/awesome-library-git/some-folder/awesome-library.lib
, then the value would be/path/to/awesome-library-git/some-folder
- Restart KiCad
Now push your changes to the new project to your git server so that others can collaborate.
Everybody else
Everyone else, who now wishes to collaborate, must find what is the ENV_VAR
the project initiator chose, and follow steps 3 through 7.
Enjoy!