Introduction
This doesn’t sound like a problem to me ![]()
I’m always happy to help with issues related to building (even if it’s not with CMake). Let’s see what went wrong for each platform that you tried.
MinGW-64
When compiling under MinGW-w64, you are getting a lot of linker errors because you need to link against the Windows libraries that are listed in the header file of each JUCE module as mingwLibs. For instance, in juce_core.h:
Projucer parses the header file for each module:
and then adds the libraries to the linker settings:
Here is how I add these libraries to PListMerger, a very simple command line helper executable of FRUT:
MSVC with Visual Studio 2019
From https://cmake.org/cmake/help/latest/command/add_executable.html:
If
WIN32is given the propertyWIN32_EXECUTABLEwill be set on the target created. See documentation of that target property for details.
and from https://cmake.org/cmake/help/latest/prop_tgt/WIN32_EXECUTABLE.html:
When this property is set to true the executable when linked on Windows will be created with a WinMain() entry point instead of just main().
Projucer does that by setting the proper value for the “SubSystem”:
which results in /SUBSYSTEM:CONSOLE or /SUBSYSTEM:WINDOWS being passed to the linker.
See /SUBSYSTEM (Specify Subsystem) | Microsoft Learn for more details.
g++ under Ubuntu
This is similar to MinGW-64, you need to link against the Linux libraries that are listed in the header files of each JUCE module as linuxLibs. The call to pkg-config only applies to linuxPackages.
Projucer extract both linuxLibs and linuxPackages here:
but they are not handled in the same way.
linuxLibs are directly passed to the linker:
linuxPackages are passed through pkg-config to both the compiler and the linker:
Since some of the linuxPackages depend on the linuxLibs, you ended-up with only a single error left. From https://linux.die.net/man/3/dlclose:
Link with -ldl.
Conclusion
I hope all of this will help you.
As you can see building JUCE using CMake is not straightforward. This is why I created FRUT.
Don’t hesitate to ask me any question (here or on PM) about CMake/FRUT/Projucer or anything else related to building JUCE projects.
