Hi,
I’m unable to build my project on Linux mint.
It was generally not finding freetype, gtk, glib etc so I added them all to the header search path in projucer.
…/…/…/…/modules/juce_graphics/juce_graphics.cpp:95:12: fatal error: ‘ft2build.h’ file not found
#include <ft2build.h>
After getting them all in place, I’m now getting the error below, any ideas?
Compiling include_juce_gui_extra.cpp
In file included from …/…/JuceLibraryCode/modules/juce_gui_extra/juce_gui_extra.cpp:150:0,
from …/…/JuceLibraryCode/include_juce_gui_extra.cpp:9:
…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:279:24: error: ‘WebKitNavigationAction’ has not been declared
WebKitNavigationAction* action,
^
…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:300:23: error: ‘WebKitNavigationAction’ has not been declared
WebKitNavigationAction* action,
^
…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp: In member function ‘int juce::GtkChildProcess::entry()’:
…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:183:79: error: ‘webkit_web_view_new_with_settings’ was not declared in this scope
GtkWidget* webviewWidget = webkit_web_view_new_with_settings (settings);
^
…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp: In member function ‘bool juce::GtkChildProcess::onNavigation(juce::String, int*, WebKitPolicyDecision*)’:
…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:289:121: error: ‘webkit_navigation_action_get_request’ was not declared in this scope
params->setProperty (“url”, String (webkit_uri_request_get_uri (webkit_navigation_action_get_request (action))));
^
…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp: In member function ‘bool juce::GtkChildProcess::onNewWindow(juce::String, int*, WebKitPolicyDecision*)’:
…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:307:121: error: ‘webkit_navigation_action_get_request’ was not declared in this scope
params->setProperty (“url”, String (webkit_uri_request_get_uri (webkit_navigation_action_get_request (action))));
^
…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp: In member function ‘bool juce::GtkChildProcess::onDecidePolicy(WebKitPolicyDecision*, WebKitPolicyDecisionType)’:
…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:341:113: error: ‘webkit_navigation_policy_decision_get_navigation_action’ was not declared in this scope
webkit_navigation_policy_decision_get_navigation_action (navigationDecision),
^
…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:351:113: error: ‘webkit_navigation_policy_decision_get_navigation_action’ was not declared in this scope
webkit_navigation_policy_decision_get_navigation_action (navigationDecision),
^
Makefile:181: recipe for target ‘build/intermediate/Debug/include_juce_gui_extra_6dee1c1a.o’ failed
make: *** [build/intermediate/Debug/include_juce_gui_extra_6dee1c1a.o] Error 1
I tried the two approaches to no avail:
Since I had to install JUCE on multiple computers, and since I didn’t want to forget how to install it if I had to install it in the future, I wrote a simple script that just clones the Juce developer branch from GitHub, installs the necessary dependencies, builds the Projucer, creates a .desktop launcher for easy access (so that you can pin it to your launcher, and find it in the start menu), and makes Ubuntu automatically open .jucer files in the Projucer. It also installs the Steinberg VST3 S…
For those of you who use that kind of stuff, I made a docker container with the proper packages installed for clang and JUCE dependencies. I’ll probably add some versioning in the future to be able to have a defined environment for a given tag.
https://hub.docker.com/r/adanselm/docker-clang-juce/
It doesn’t contain any SDK though (nor JUCE), since it is hosted on a public hub.
I tried upgrading to webkit to libwebkit2gtk-4.0-dev with this output:
Compiling sqlite3.c
Compiling PluginWindow.cpp
Compiling PluginCache.cpp
Compiling VstSampler.cpp
Compiling MainComponent.cpp
Compiling Main.cpp
Compiling include_juce_audio_basics.cpp
Compiling include_juce_audio_devices.cpp
Compiling include_juce_audio_formats.cpp
Compiling include_juce_audio_processors.cpp
Compiling include_juce_core.cpp
Compiling include_juce_cryptography.cpp
Compiling include_juce_data_structures.cpp
Compiling include_juce_events.cpp
Compiling include_juce_graphics.cpp
Compiling include_juce_gui_basics.cpp
Compiling include_juce_gui_extra.cpp
Compiling include_juce_opengl.cpp
Compiling include_juce_video.cpp
Linking GUI_VST - App
build/intermediate/Debug/include_juce_gui_extra_6dee1c1a.o: In function juce::GtkChildProcess::entry()': /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:165: undefined reference to
gtk_init’
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:167: undefined reference to webkit_settings_new' /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:179: undefined reference to
gtk_plug_new’
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:181: undefined reference to gtk_scrolled_window_new' /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:183: undefined reference to
webkit_web_view_new_with_settings’
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:184: undefined reference to webkit_web_view_get_type' /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:184: undefined reference to
g_type_check_instance_cast’
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:187: undefined reference to gtk_container_get_type' /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:187: undefined reference to
g_type_check_instance_cast’
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:187: undefined reference to gtk_container_add' /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:188: undefined reference to
gtk_container_get_type’
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:188: undefined reference to g_type_check_instance_cast' /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:188: undefined reference to
gtk_container_add’
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:190: undefined reference to webkit_web_view_load_uri' /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:193: undefined reference to
g_signal_connect_data’
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:196: undefined reference to g_signal_connect_data' /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:199: undefined reference to
g_signal_connect_data’
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:201: undefined reference to gtk_widget_show_all' /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:202: undefined reference to
gtk_plug_get_type’
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:202: undefined reference to g_type_check_instance_cast' /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:202: undefined reference to
gtk_plug_get_id’
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:211: undefined reference to g_unix_fd_add' /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:214: undefined reference to
gtk_main’
build/intermediate/Debug/include_juce_gui_extra_6dee1c1a.o: In function juce::GtkChildProcess::goToURL(juce::var const&)': /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:223: undefined reference to
webkit_web_view_load_uri’
build/intermediate/Debug/include_juce_gui_extra_6dee1c1a.o: In function juce::GtkChildProcess::handleDecisionResponse(juce::var const&)': /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:235: undefined reference to
webkit_policy_decision_use’
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:237: undefined reference to webkit_policy_decision_ignore' /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:240: undefined reference to
g_object_unref’
build/intermediate/Debug/include_juce_gui_extra_6dee1c1a.o: In function juce::GtkChildProcess::handleCommand(juce::String const&, juce::var const&)': /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:249: undefined reference to
webkit_web_view_go_back’
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:250: undefined reference to webkit_web_view_go_forward' /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:251: undefined reference to
webkit_web_view_reload’
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:252: undefined reference to webkit_web_view_stop_loading' build/intermediate/Debug/include_juce_gui_extra_6dee1c1a.o: In function
juce::GtkChildProcess::quit()‘:
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:275: undefined reference to gtk_main_quit' build/intermediate/Debug/include_juce_gui_extra_6dee1c1a.o: In function
juce::GtkChildProcess::onNavigation(juce::String, _WebKitNavigationAction*, _WebKitPolicyDecision*)’:
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:284: undefined reference to g_object_ref' /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:289: undefined reference to
webkit_navigation_action_get_request’
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:289: undefined reference to webkit_uri_request_get_uri' build/intermediate/Debug/include_juce_gui_extra_6dee1c1a.o: In function
juce::GtkChildProcess::onNewWindow(juce::String, _WebKitNavigationAction*, _WebKitPolicyDecision*)‘:
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:307: undefined reference to webkit_navigation_action_get_request' /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:307: undefined reference to
webkit_uri_request_get_uri’
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:311: undefined reference to webkit_policy_decision_ignore' build/intermediate/Debug/include_juce_gui_extra_6dee1c1a.o: In function
juce::GtkChildProcess::onLoadChanged(WebKitLoadEvent)‘:
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:325: undefined reference to webkit_web_view_get_uri' build/intermediate/Debug/include_juce_gui_extra_6dee1c1a.o: In function
juce::GtkChildProcess::onDecidePolicy(_WebKitPolicyDecision*, WebKitPolicyDecisionType)’:
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:337: undefined reference to webkit_navigation_policy_decision_get_type' /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:337: undefined reference to
g_type_check_instance_cast’
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:338: undefined reference to webkit_navigation_policy_decision_get_frame_name' /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:340: undefined reference to
webkit_navigation_policy_decision_get_navigation_action’
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:347: undefined reference to webkit_navigation_policy_decision_get_type' /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:347: undefined reference to
g_type_check_instance_cast’
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:348: undefined reference to webkit_navigation_policy_decision_get_frame_name' /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:350: undefined reference to
webkit_navigation_policy_decision_get_navigation_action’
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:357: undefined reference to webkit_response_policy_decision_get_type' /home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:357: undefined reference to
g_type_check_instance_cast’
/home/caseybasichis/Prog/black_coffee/VSTsampler/Builds/Linux/…/…/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp:361: undefined reference to `webkit_policy_decision_use’
collect2: error: ld returned 1 exit status
Makefile:94: recipe for target ‘build/GUI_VST’ failed
make: *** [build/GUI_VST] Error 1
t0m
September 4, 2017, 8:01am
3
They are linker errors - I suspect that your project has included the correct header files but the final linking step isn’t picking up the correct webkit library.
Doing make V=1
will show you the link command.
hi t0m,
It seems x11r6 may be the issue? sudo apt-get install libx11-dev reports that it’s already installed but it’s not present in /usr/
Does that look like the issue? Any ideas what I might do?
Linking GUI_VST - App
mkdir -p build
mkdir -p build
mkdir -p build
g++ -o build/GUI_VST build/intermediate/Debug/sqlite3_a6cd1aa8.o build/intermediate/Debug/PluginWindow_609dbc0c.o build/intermediate/Debug/PluginCache_310dd2f0.o build/intermediate/Debug/VstSampler_e1ae03ba.o build/intermediate/Debug/MainComponent_a6ffb4a5.o build/intermediate/Debug/Main_90ebc5c2.o build/intermediate/Debug/include_juce_audio_basics_8a4e984a.o build/intermediate/Debug/include_juce_audio_devices_63111d02.o build/intermediate/Debug/include_juce_audio_formats_15f82001.o build/intermediate/Debug/include_juce_audio_processors_10c03666.o build/intermediate/Debug/include_juce_core_f26d17db.o build/intermediate/Debug/include_juce_cryptography_8cb807a8.o build/intermediate/Debug/include_juce_data_structures_7471b1e3.o build/intermediate/Debug/include_juce_events_fd7d695.o build/intermediate/Debug/include_juce_graphics_f817e147.o build/intermediate/Debug/include_juce_gui_basics_e3f79785.o build/intermediate/Debug/include_juce_gui_extra_6dee1c1a.o build/intermediate/Debug/include_juce_opengl_a8a032b.o build/intermediate/Debug/include_juce_video_be78589.o -march=native -Lbuild -Lbuild -L/usr/X11R6/lib/ -lasound -lfreetype -lcurl -lX11 -lXext -lXinerama -lGL -ldl -lpthread -lrt -march=native
build/intermediate/Debug/include_juce_gui_extra_6dee1c1a.o: In function `juce::GtkChildProcess::entry()':
locate x11r6 shows:
/usr/lib/x86_64-linux-gnu/X11/rstart/commands/x11r6
/usr/lib/x86_64-linux-gnu/X11/rstart/commands/x11r6/@List
/usr/lib/x86_64-linux-gnu/X11/rstart/commands/x11r6/LoadMonitor
/usr/lib/x86_64-linux-gnu/X11/rstart/commands/x11r6/Terminal
/usr/lib/x86_64-linux-gnu/X11/rstart/contexts/x11r6
t0m
September 4, 2017, 8:47am
5
My link line includes -lwebkit2gtk-4.0 -lgtk-3
, which is generated from a pkg-config --libs alsa freetype2 libcurl x11 xext xinerama webkit2gtk-4.0 gtk+-x11-3.0
command. It looks like pkg-config
isn’t adding those libraries.
I’m up and running!
Removing the explicit lib search path for /usr/x11r6 allowed it to build.
The long manual list of dependencies was still needed. Oddly pkg-config seems to find the libs:
pkg-config --cflags freetype2
-I/usr/include/freetype2
Thanks for your help. Seeing the linker list really put me onto a solution.
1 Like