I am a brand new user of KiCad and having some trouble. I had a pre-existing project that apparently had some components that were pointing to a library location. I ended up saving a copy of the project in another location and now my .sch file has a bunch of blocks with “??” where my components should be. I noticed if I double click on the object there is a section called “Chip Name” that points to the library location. How can I re-associate my component with its library location? The more appropriate question might be where is the library of components saved within a project?

Do you have file which name ends with -cache.lib? If yes, you can use this file as a project specific library. Backup your project files first! Copy this file and rename it to match project name keeping the .lib extension. Open project and reopen schematic. Go to the Preferences and select Component Libraries. Remove all libraries from top list except power. Select current project path - should be the first path in last list. Add your new library at the top of the first list. Click OK then refresh schematic. If everything goes fine you should have back your symbols.

Thank you! That helped me solve my problem. Using your direction I opened my project folder and noticed my -cache.lib file was still saved with my old project name. All I did was create a copy of the file and saved it with a name to match exactly with my .sch file and everything repopulated. Thanks so much for your help.

Please be aware that any further modification (for ex. error fixes) you do in schematic symbols for this project - except power ports - will be done only for this project. Other KiCad schematic libraries will be untouched.

I appreciate the warning. Is there a way around that? I can’t think of a way to remedy that problem since it looks like the -cache.lib file needs to be named differently per whatever project is referencing it.

I appreciate the warning. Is there a way around that? I can’t think of a way to remedy that problem since it looks like the -cache.lib file needs to be named differently per whatever project is referencing it.

The idea behind the -cache.lib is that it’s specific to a project. When you add a symbol from a symbol library to your schematic, the symbol is also copied to the project’s cache library. This is how Kicad’s schematics can shared without also distributing the original libraries.

Now, as you’ve noticed, the name of the cache library references the project. That is by design. If you wish to use the symbols in a different project, you have to add them to a standard schematic library. Using the library editor, you can load the symbol from the cache library and save it to a new library.

Yes, it’s somewhat ridiculous. The developers are working on a major update to EESchema which will make it work like pcbnew. That is, when a symbol is added to a schematic page, that symbol is embedded in the page file (like pcbnew), and not referenced from a library. This won’t be ready for quite some time, though.