Heya all! I’ve been trying to set up CMake to replace the ProJucer for an audio plugin, and running into some difficulties with Intellisense for VSCode on Windows. Basically Intellisense is having difficulties finding and linking Juce. The build works fine, so I don’t think it’s an issue with my CMakeList (posted below, it’s just the same as the example really). I was wondering if anyone has found a fix to get intellisense to actually sense intelligently with Juce? I want to be able to inspect different things as I code rather than code somewhat blindly.
I’ve tried forcing the include of the JuceHeader.h file with a forcedInclude, as well as including the JuceLibraryCode/modules in the properties file, but it didn’t fix the issue.
cmake_minimum_required(VERSION 3.22)
# Always use the newest C++ standard on green-field projects if possible.
set(CMAKE_CXX_STANDARD 23)
if (APPLE)
# On Mac, we need to wait for a new JUCE version that fixes the compilation issue
set(CMAKE_CXX_STANDARD 20)
endif()
# This is the internal name of the project and the name of JUCE's shared code target
# Note: This cannot have spaces (it may be 2024, but you can't have it all!)
# Worry not, JUCE's PRODUCT_NAME can have spaces (and is what DAWs display)
set(PROJECT_NAME "PluginName")
project(${PROJECT_NAME} VERSION 0.1)
add_subdirectory(JUCE)
juce_add_plugin(${PROJECT_NAME}
# VERSION ... # Set this if the plugin version is different to the project version
# ICON_BIG ... # ICON_* arguments specify a path to an image file to use as an icon for the Standalone
# ICON_SMALL ...
# COMPANY_NAME ... # Specify the name of the plugin's author
IS_SYNTH TRUE # Is this a synth or an effect?
NEEDS_MIDI_INPUT TRUE # Does the plugin need midi input?
# NEEDS_MIDI_OUTPUT TRUE/FALSE # Does the plugin need midi output?
# IS_MIDI_EFFECT TRUE/FALSE # Is this plugin a MIDI effect?
# EDITOR_WANTS_KEYBOARD_FOCUS TRUE/FALSE # Does the editor need keyboard focus?
# COPY_PLUGIN_AFTER_BUILD TRUE/FALSE # Should the plugin be installed to a default location after building?
PLUGIN_MANUFACTURER_CODE Qlts # A four-character manufacturer id with at least one upper-case character
PLUGIN_CODE Aran # A unique four-character plugin id with exactly one upper-case character
# GarageBand 10.3 requires the first letter to be upper-case, and the remaining letters to be lower-case
FORMATS AU VST3 Standalone # The formats to build. Other valid formats are: AAX Unity VST AU AUv3
PRODUCT_NAME "PluginName" # The name of the final executable, which can differ from the target name
)
juce_generate_juce_header(${PROJECT_NAME})
file(GLOB_RECURSE SourceFiles CONFIGURE_DEPENDS
"${CMAKE_CURRENT_SOURCE_DIR}/Source/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/Source/*.h")
target_sources("${PROJECT_NAME}" PRIVATE ${SourceFiles})
target_compile_definitions(${PROJECT_NAME}
PUBLIC
# JUCE_WEB_BROWSER and JUCE_USE_CURL would be on by default, but you might not need them.
JUCE_WEB_BROWSER=0 # If you remove this, add `NEEDS_WEB_BROWSER TRUE` to the `juce_add_plugin` call
JUCE_USE_CURL=0 # If you remove this, add `NEEDS_CURL TRUE` to the `juce_add_plugin` call
JUCE_VST3_CAN_REPLACE_VST2=0)
target_link_libraries(${PROJECT_NAME}
PRIVATE
juce::juce_audio_utils
PUBLIC
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)
