Projucer not responding - Long "Header Search Paths"

Hello Everyone,

i´m trying to build a basic plugin with Projucer, but Projucer stops responding when i try to edit the “Header Search Paths” inside each Build Type.

it is not a small list, but it is just a text edit, no?

setting the “external Libraries to Link” with also a long list works, although a little bit slow.

Most recent version of Projucer (“no new version available”)
Windows 11
Visual Studio 2022

My “Header Search Paths”:
D:\Fred\Uni\Abschluss\Coding\Libraries\onnxruntime\build\Windows\RelWithDebInfo\_deps\utf8_range-src;D:\Fred\Uni\Abschluss\Coding\Libraries\onnxruntime\include\onnxruntime;D:\Fred\Uni\Abschluss\Coding\Libraries\onnxruntime\include\onnxruntime\core\session;D:\Fred\Uni\Abschluss\Coding\Libraries\onnxruntime\build\Windows\RelWithDebInfo\_deps\pytorch_cpuinfo-src\include;D:\Fred\Uni\Abschluss\Coding\Libraries\onnxruntime\build\Windows\RelWithDebInfo;D:\Fred\Uni\Abschluss\Coding\Libraries\onnxruntime\onnxruntime;D:\Fred\Uni\Abschluss\Coding\Libraries\onnxruntime\build\Windows\RelWithDebInfo\_deps\abseil_cpp-src;D:\Fred\Uni\Abschluss\Coding\Libraries\onnxruntime\onnxruntime\test\win_getopt\wide\include;D:\Fred\Uni\Abschluss\Coding\Libraries\onnxruntime\onnxruntime\test\util\include;D:\Fred\Uni\Abschluss\Coding\Libraries\onnxruntime\build\Windows\RelWithDebInfo\_deps\eigen-src;D:\Fred\Uni\Abschluss\Coding\Libraries\onnxruntime\build\Windows\RelWithDebInfo\_deps\safeint-src;D:\Fred\Uni\Abschluss\Coding\Libraries\onnxruntime\build\Windows\RelWithDebInfo\_deps\date-src\include;D:\Fred\Uni\Abschluss\Coding\Libraries\onnxruntime\build\Windows\RelWithDebInfo\_deps\microsoft_wil-src\include;D:\Fred\Uni\Abschluss\Coding\Libraries\onnxruntime\build\Windows\RelWithDebInfo\_deps\nlohmann_json-src\single_include;D:\Fred\Uni\Abschluss\Coding\Libraries\onnxruntime\build\Windows\RelWithDebInfo\_deps\onnx-src;D:\Fred\Uni\Abschluss\Coding\Libraries\onnxruntime\build\Windows\RelWithDebInfo\_deps\onnx-build;D:\Fred\Uni\Abschluss\Coding\Libraries\onnxruntime\build\Windows\RelWithDebInfo\_deps\protobuf-src\src;D:\Fred\Uni\Abschluss\Coding\Libraries\onnxruntime\build\Windows\RelWithDebInfo\_deps\re2-src;D:\Fred\Uni\Abschluss\Coding\Libraries\onnxruntime\build\Windows\RelWithDebInfo\_deps\mp11-src\include;D:\Fred\Uni\Abschluss\Coding\Libraries\onnxruntime\build\Windows\RelWithDebInfo\_deps\flatbuffers-src\include;D:\Fred\Uni\Abschluss\Coding\Libraries\onnxruntime\build\Windows\RelWithDebInfo\_deps\pytorch_clog-src\deps\clog\include;%(AdditionalIncludeDirectories)

Whats the difference between setting the additional include directories (Header Search Paths) inside the Build Types (like “debug”) as opposed to inside “Project Settings” (view → show project settings)?

Thanks, for any help!

Do you really need all those directories in your paths? I advise careful auditing of this list.

If you do, then … fair enough …

Header Search Paths is for, indeed, any additional C/C++ headers you might want to use, which will of course have their own library, in the production of a target.

The Project Settings parameter is to give Projucer a base-line to apply to any targets it creates on your behalf.

Always remember that Projucer is a tool-producing tool. Its a GUI that allows you to construct ‘build rigging’ for whatever project/plugin/targets you’re using in your project. You will use it to overwrite build rigs (for MacOS, iOS, Windows, whatever…) on a regular basis.

If you have a lot of external libs, its maybe worth the effort to just have a CMake-based project as soon as possible, and solve the path/module conundrum that way. Projucer is a good rig generator - CMake is what you ship and where you ship it. Plus some of those libraries might have their own CMakeList.txt files that will save you headaches …

yes, i have to become more familiar with CMake soon.

I need so many directories because that´s the only way i found to link ONNXruntime statically.

Understood.

But also key to know: ONNX comes with CMakeLists.txt files for easy integration into CMake-based projects. You might find it a lot easier to get a cross-platform build for your project with this method …