Hi there
I have trouble when I try to include some JUCE headers in my own project. For example, if I want to use MidiMessageSequence
class, I have to include <juce_audio_basics/midi/juce_MidiMessage.h>
before <juce_audio_basics/midi/juce_MidiMessageSequence.h>
, otherwise I get a compile error saying that MidiMessage does not name a type
. And I have to include <juce_core/juce_core.h>
before or I get incomplete type error.
And indeed, when I open the corresponding header files, there is no #include
in them. How to fix this strange behavior ? This seems like JUCE is configured to use precompiled headers.
Here is a very simple project reproducing the issue :
Files
CMakeLists.txt
project(ConsoleAppTemplate VERSION 0.1)
set (TargetName ${PROJECT_NAME})
juce_add_console_app(${TargetName} PRODUCT_NAME "Console App Example")
target_sources(${TargetName} PRIVATE Source/Main.cpp)
target_compile_definitions(${TargetName} PRIVATE
JUCE_WEB_BROWSER=0
JUCE_USE_CURL=0)
target_link_libraries(${TargetName} PRIVATE
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags
juce::juce_core
juce::juce_audio_basics)
Source
Main.cpp
#include <juce_core/juce_core.h> // <-- Needed
#include <juce_audio_basics/midi/juce_MidiMessage.h> // <-- Needed too
#include <juce_audio_basics/midi/juce_MidiMessageSequence.h>
int main()
{
auto test = juce::MidiMessageSequence();
return 0;
}