Projucer Macro Overview

Wouldn’t it be cool, if every macro, which is used inside JUCE would have a checkbox in Projucer?

And some kind of overview would be great (So you don’t have to look into every module)

I think there are lot missing, for example JucePlugin_AUHighResolutionParameters

BTW: If you ever remove a macro please add a warning

#ifdef JUCE_OLDMACRO
  #warning this macro isn't used anymore
#endif

Another Idea:
It would be cool if, Projucer could check automatically all Macros beginning with “JUCE_*” if they exists, to find typos

PS: Please no breaking changes for the next 2 years :wink:

1 Like

Here is shell one-liner to find all JUCE_ Macros

find . -type f \( -name "*.h*" -o -name "*.cpp" -o -name "*.mm" \)  -exec grep -o -E '\w+' {} \; | grep '^JUCE_' | sort -u -f 

And this is the output: :smile: (without _INCLUDED Macros )

JUCE_
JUCE_32BIT
JUCE_64BIT
JUCE_64BIT_ATOMICS_UNAVAILABLE
JUCE_AAX_LIB
JUCE_AAX_LIB_PATH
JUCE_AAX_LIB_SUFFIX
JUCE_ALIGN
JUCE_ALLOW_STATIC_NULL_VARIABLES
JUCE_ALSA
JUCE_ALSA_FAILED
JUCE_ALSA_LOG
JUCE_ALSA_LOGGING
JUCE_ALSA_MIDI_INPUT_NAME
JUCE_ALSA_MIDI_OUTPUT_NAME
JUCE_ANALYZER_NORETURN
JUCE_ANDROID
JUCE_ANDROID_ACTIVITY_CLASSNAME
JUCE_ANDROID_ACTIVITY_CLASSPATH
JUCE_ANDROID_API_VERSION
JUCE_API
JUCE_APP_CONFIG_HEADER
JUCE_APP_VERSION
JUCE_APP_VERSION_HEX
JUCE_ARM
JUCE_ARM_SOFT_FLOAT_ABI
JUCE_ASIO
JUCE_ASIOCALLBACK
JUCE_ASIO_DEBUGGING
JUCE_ASIO_LOG
JUCE_ASIO_LOG_ERROR
JUCE_ASSERT_MESSAGE_MANAGER_IS_LOCKED
JUCE_ATOMICS_GCC
JUCE_ATOMICS_MAC_LEGACY
JUCE_ATOMICS_WINDOWS
JUCE_AUCocoaViewClass_
JUCE_AUDIOUNIT_OBJC_NAME
JUCE_AUTORELEASEPOOL
JUCE_AU_LOG
JUCE_BEGIN_VEC_OP
JUCE_BIG_ENDIAN
JUCE_BINDIR
JUCE_BLOCK_WITH_FORCED_SEMICOLON
JUCE_BREAK_IN_DEBUGGER
JUCE_BSD
JUCE_BUILDNUMBER
JUCE_CALC_LINEAR_GRAD_POS1
JUCE_CALC_LINEAR_GRAD_POS2
JUCE_CALLTYPE
JUCE_CATCH_DEPRECATED_CODE_MISUSE
JUCE_CATCH_EXCEPTION
JUCE_CATCH_UNHANDLED_EXCEPTIONS
JUCE_CDECL
JUCE_CFLAGS
JUCE_CHECKED_RESULT
JUCE_CHECKSETTINGMACROS_H
JUCE_CHECK_COORDS_ARE_VALID
JUCE_CHECK_MEMORY_LEAKS
JUCE_CHECK_OPENGL_ERROR
JUCE_CLAMP_TEXTURE_COORD
JUCE_CLANG
JUCE_COLOURGRADIENT_CHECK_COORDS_INITIALISED
JUCE_COMCALL
JUCE_COMCLASS
JUCE_COMPILER_SUPPORTS_ARC
JUCE_COMPILER_SUPPORTS_INITIALIZER_LISTS
JUCE_COMPILER_SUPPORTS_LAMBDAS
JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS
JUCE_COMPILER_SUPPORTS_NOEXCEPT
JUCE_COMPILER_SUPPORTS_NULLPTR
JUCE_COMPILER_SUPPORTS_OVERRIDE_AND_FINAL
JUCE_COMPILER_SUPPORTS_STATIC_ASSERT
JUCE_COMPILER_SUPPORTS_VARIADIC_TEMPLATES
JUCE_COMPILER_WARNING
JUCE_COMPONENT_ENTRY
JUCE_COMPONENT_ENTRYX
JUCE_COMRESULT
JUCE_COREAUDIOLOG
JUCE_COREAUDIO_LOGGING_ENABLED
JUCE_COREGRAPHICS_RENDER_WITH_MULTIPLE_PAINT_CALLS
JUCE_CORETEXT_AVAILABLE
JUCE_CORE_INCLUDE_COM_SMART_PTR
JUCE_CORE_INCLUDE_JNI_HELPERS
JUCE_CORE_INCLUDE_NATIVE_HEADERS
JUCE_CORE_INCLUDE_OBJC_HELPERS
JUCE_CPPFLAGS
JUCE_CXXFLAGS
JUCE_DEBUG
JUCE_DEBUG_KEYCODES
JUCE_DEBUG_XERRORS
JUCE_DECLARE_GL_FUNCTION
JUCE_DECLARE_IMAGE_UNIFORMS
JUCE_DECLARE_JS_TOKEN
JUCE_DECLARE_LINEAR_UNIFORMS
JUCE_DECLARE_MASK_UNIFORMS
JUCE_DECLARE_MATRIX_UNIFORM
JUCE_DECLARE_NON_COPYABLE
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR
JUCE_DECLARE_RADIAL_UNIFORMS
JUCE_DECLARE_VARYING_COLOUR
JUCE_DECLARE_VARYING_PIXELPOS
JUCE_DECLARE_VST3_COM_QUERY_METHODS
JUCE_DECLARE_VST3_COM_REF_METHODS
JUCE_DECLARE_WGL_EXTENSION_FUNCTION
JUCE_DECL_JACK_FUNCTION
JUCE_DECL_VOID_JACK_FUNCTION
JUCE_DEFINE_T_MACRO
JUCE_DELETED_FUNCTION
JUCE_DEPRECATED
JUCE_DEPRECATED_WITH_BODY
JUCE_DIRECT2D
JUCE_DIRECTSHOW
JUCE_DIRECTSHOW_
JUCE_DIRECTSOUND
JUCE_DIRECTSOUND_LOGGING
JUCE_DISABLE_ASSERTIONS
JUCE_DISABLE_AUDIOPROCESSOR_BEGIN_END_GESTURE_CHECKING
JUCE_DISABLE_AU_FACTORY_ENTRY
JUCE_DISABLE_DLL_ALLOCATORS
JUCE_DISABLE_JUCE_VERSION_PRINTING
JUCE_DISABLE_NATIVE_FILECHOOSERS
JUCE_DISABLE_WIN32_DPI_AWARENESS
JUCE_DLL
JUCE_DLL_BUILD
JUCE_DONT_ASSERT_ON_GLSL_COMPILE_ERROR
JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
JUCE_DONT_DECLARE_PROJECTINFO
JUCE_DS_LOG
JUCE_DS_LOG_ERROR
JUCE_DUMP_MOUSE_EVENTS
JUCE_ENABLE_LIVE_CONSTANT_EDITOR
JUCE_ENABLE_REPAINT_DEBUGGING
JUCE_EVENTS_INCLUDE_WIN32_MESSAGE_WINDOW
JUCE_EXCEPTIONS_DISABLED
JUCE_EXPORTED_FUNCTION
JUCE_FACTORY_ENTRY
JUCE_FACTORY_ENTRYX
JUCE_FINISH_VEC_OP
JUCE_FONT_PATH
JUCE_FORCE_DEBUG
JUCE_FORCE_USE_LEGACY_PARAM_IDS
JUCE_FRAGCOORD_TO_MASK_POS
JUCE_GCC
JUCE_GET_IMAGE_PIXEL
JUCE_GET_MASK_ALPHA
JUCE_GET_TEXTURE_COLOUR
JUCE_GLSL_VERSION
JUCE_GL_BASE_FUNCTIONS
JUCE_GL_EXTENSION_FUNCTIONS
JUCE_GL_VERTEXBUFFER_FUNCTIONS
JUCE_GRAPHICS_INCLUDE_COREGRAPHICS_HELPERS
JUCE_HANDLE_MULTIPLE_INSTANCES
JUCE_HIGHP
JUCE_INCLUDE_FLAC_CODE
JUCE_INCLUDE_JPEGLIB_CODE
JUCE_INCLUDE_OGGVORBIS_CODE
JUCE_INCLUDE_PNGLIB_CODE
JUCE_INCLUDE_ZLIB_CODE
JUCE_INCREMENT_DEST
JUCE_INCREMENT_SRC1_SRC2_DEST
JUCE_INCREMENT_SRC_DEST
JUCE_INIT_GL_FUNCTION
JUCE_INIT_WGL_FUNCTION
JUCE_INTEL
JUCE_IOS
JUCE_IOS_AUDIO_LOG
JUCE_IOS_AUDIO_LOGGING
JUCE_IOS_MAC_VIEW
JUCE_IPHONE
JUCE_IS_REPAINT_DEBUGGING_ACTIVE
JUCE_IUNKNOWNCLASS
JUCE_JACK
JUCE_JACK_CLIENT_NAME
JUCE_JACK_LOG
JUCE_JACK_LOG_STATUS
JUCE_JNI_CALLBACK
JUCE_JOIN_MACRO
JUCE_JOIN_MACRO_HELPER
JUCE_JS_COMPARE_KEYWORD
JUCE_JS_COMPARE_OPERATOR
JUCE_JS_KEYWORDS
JUCE_JS_OPERATORS
JUCE_LADSPA_LOG
JUCE_LADSPA_LOGGING
JUCE_LDFLAGS
JUCE_LEAK_DETECTOR
JUCE_LIBDIR
JUCE_LINUX
JUCE_LITTLE_ENDIAN
JUCE_LIVE_CONSTANT
JUCE_LOAD_DEST
JUCE_LOAD_NONE
JUCE_LOAD_PATH_DATA
JUCE_LOAD_SRC
JUCE_LOAD_SRC1_SRC2
JUCE_LOAD_SRC1_SRC2_DEST
JUCE_LOAD_SRC_DEST
JUCE_LOAD_WINAPI_FUNCTION
JUCE_LOG_ASSERTIONS
JUCE_LOG_COREMIDI_ERRORS
JUCE_LOG_CURRENT_ASSERTION
JUCE_LOWP
JUCE_MAC
JUCE_MAC_WINDOW_VISIBITY_BODGE
JUCE_MAIN_FUNCTION
JUCE_MAIN_FUNCTION_ARGS
JUCE_MAJOR_VERSION
JUCE_MATRIX_TIMES_FRAGCOORD
JUCE_MEDIAFOUNDATION
JUCE_MEDIUMP
JUCE_MIDITEST_MAINCOMPONENT_H
JUCE_MINGW
JUCE_MINOR_VERSION
JUCE_MODAL_LOOPS_PERMITTED
JUCE_MODULE_AVAILABLE_
JUCE_MODULE_AVAILABLE_juce_audio_basics
JUCE_MODULE_AVAILABLE_juce_audio_devices
JUCE_MODULE_AVAILABLE_juce_audio_formats
JUCE_MODULE_AVAILABLE_juce_audio_plugin_client
JUCE_MODULE_AVAILABLE_juce_audio_processors
JUCE_MODULE_AVAILABLE_juce_audio_utils
JUCE_MODULE_AVAILABLE_juce_blocks_basics
JUCE_MODULE_AVAILABLE_juce_box2d
JUCE_MODULE_AVAILABLE_juce_core
JUCE_MODULE_AVAILABLE_juce_cryptography
JUCE_MODULE_AVAILABLE_juce_data_structures
JUCE_MODULE_AVAILABLE_juce_events
JUCE_MODULE_AVAILABLE_juce_graphics
JUCE_MODULE_AVAILABLE_juce_gui_basics
JUCE_MODULE_AVAILABLE_juce_gui_extra
JUCE_MODULE_AVAILABLE_juce_opengl
JUCE_MODULE_AVAILABLE_juce_osc
JUCE_MODULE_AVAILABLE_juce_video
JUCE_MOD_TEXTURE_COORD
JUCE_MOUSE_EVENT_DBG
JUCE_MSVC
JUCE_NAMESPACE
JUCE_NATIVE_WCHAR_IS_UTF16
JUCE_NATIVE_WCHAR_IS_UTF32
JUCE_NATIVE_WCHAR_IS_UTF8
JUCE_NO_ASSOCIATIVE_MATH_OPTIMISATIONS
JUCE_NO_COMPILER_THREAD_LOCAL
JUCE_NO_DEPRECATION_WARNINGS
JUCE_NO_INLINE_ASM
JUCE_NSERROR_CHECK
JUCE_NSViewCallback_
JUCE_OBJDIR
JUCE_OPENGL
JUCE_OPENGL3
JUCE_OPENGL_ALLOW_NON_POWER_OF_TWO_TEXTURES
JUCE_OPENGL_ES
JUCE_OUTDIR
JUCE_PACKED
JUCE_PERFORM_PIXEL_OP_LOOP
JUCE_PERFORM_VEC_OP_DEST
JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST
JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST_DEST
JUCE_PERFORM_VEC_OP_SRC_DEST
JUCE_PLUGINHOST_AU
JUCE_PLUGINHOST_LADSPA
JUCE_PLUGINHOST_VST
JUCE_PLUGINHOST_VST3
JUCE_PREFERRED_MAX_FILE_HANDLES
JUCE_PREVENT_HEAP_ALLOCATION
JUCE_PROJUCER_LIVE_BUILD
JUCE_PUBLIC_FUNCTION
JUCE_PUBLIC_IN_DLL_BUILD
JUCE_QUICKTIME
JUCE_RGBA_FORMAT
JUCE_RTAS_LINK_TO_DEBUG_LIB
JUCE_RTAS_PLUGINGESTALT_IS_CACHEABLE
JUCE_SEL
JUCE_SHA256
JUCE_SHARED_CODE
JUCE_SNAP_TO_ZERO
JUCE_STANDALONE_APPLICATION
JUCE_STAT
JUCE_STATE_DICTIONARY_KEY
JUCE_STRINGIFY
JUCE_STRINGIFY_MACRO_HELPER
JUCE_STRINGS_ARE_UNICODE
JUCE_STRING_UTF_TYPE
JUCE_SUPPORTS_AUv3
JUCE_SUPPORT_CARBON
JUCE_SUPPORT_LEGACY_AUDIOPROCESSOR
JUCE_SYSTEMAUDIOVOL_IMPLEMENTED
JUCE_T
JUCE_TRY
JUCE_UNDENORMALISE
JUCE_UNIT_TESTS
JUCE_URLDelegate_
JUCE_USER_DEFINED_RC_FILE
JUCE_USE_ANDROID_OPENSLES
JUCE_USE_ARM_NEON
JUCE_USE_CAMERA
JUCE_USE_CDBURNER
JUCE_USE_CDREADER
JUCE_USE_COREIMAGE_LOADER
JUCE_USE_CURL
JUCE_USE_CUSTOM_AU3_STANDALONE_APP
JUCE_USE_DIRECTWRITE
JUCE_USE_FLAC
JUCE_USE_FREETYPE
JUCE_USE_FREETYPE_AMALGAMATED
JUCE_USE_IOPM_SCREENSAVER_DEFEAT
JUCE_USE_LAME_AUDIO_FORMAT
JUCE_USE_MP3AUDIOFORMAT
JUCE_USE_NEW_IOS_ALERTWINDOW
JUCE_USE_OGGVORBIS
JUCE_USE_SSE_INTRINSICS
JUCE_USE_STUDIO_ONE_COMPATIBLE_PARAMETERS
JUCE_USE_VDSP_FRAMEWORK
JUCE_USE_WINDOWS_MEDIA_FORMAT
JUCE_USE_XCURSOR
JUCE_USE_XINERAMA
JUCE_USE_XRANDR
JUCE_USE_XRENDER
JUCE_USE_XSHM
JUCE_USING_COREIMAGE_LOADER
JUCE_VC8_OR_EARLIER
JUCE_VEC_LOOP
JUCE_VEC_LOOP_TWO_SOURCES
JUCE_VEC_LOOP_TWO_SOURCES_WITH_DEST_LOAD
JUCE_VERSION
JUCE_VIEWCONTROLLER_OBJC_NAME
JUCE_VIEW_CALLBACK
JUCE_VST3HEADERS_INCLUDE_HEADERS_ONLY
JUCE_VST3_CAN_REPLACE_VST2
JUCE_VST3_DEBUGGING
JUCE_VST3_EMULATE_MIDI_CC_WITH_PARAMETERS
JUCE_VST_LOG
JUCE_VST_RETURN_HEX_VERSION_NUMBER_DIRECTLY
JUCE_VST_WRAPPER_INVOKE_MAIN
JUCE_VST_WRAPPER_LOAD_CUSTOM_MAIN
JUCE_WARNING_HELPER
JUCE_WASAPI
JUCE_WASAPI_ERR
JUCE_WASAPI_EXCLUSIVE
JUCE_WASAPI_LOGGING
JUCE_WAV_DO_NOT_PAD_HEADER_SIZE
JUCE_WEB_BROWSER
JUCE_WIN32
JUCE_WIN32_TIMER_PERIOD
JUCE_WINDOWS
JUCE_WINDOWS_ALT_KEY_TRIGGERS_MENU
JUCE_ZLIB_INCLUDE_PATH
4 Likes

You can use grep -v to exclude “*_INCLUDED” results automatically:

find . -type f \( -name "*.h*" -o -name "*.cpp" -o -name "*.mm" \)  -exec grep -o -E '\w+' {} \; | grep '^JUCE_' | grep -v "_INCLUDED$" | sort -u -f