Compiler warnings from Ableton Link


#1

Hi there,

I have made a new “Audio Application” project in Projucer and simply added the Ableton Link header in “MainComponent.h”. In projucer, I have added the suggested preprocessor defs and compiler flags as per Ableton.
The default project builds fine, but my compiler is giving 140+ warnings. I’ve put the full project on my git and have saved the build output and error list in text files under “/Logs”:
project_github

Posting in this forum because I have built this other project without any of these compiler warnings. So I’m assuming that my clang settings are not the issue, and I shouldn’t have to resort to ignoring header files.
juce_meets_link_github

I have made sure to copy all projucer exporter settings (Visual Studio 2017) from this other project to my project, i.e. preprocessor definitions and compiler flags. Although my project builds fine I would really like if I could get rid of these “warnings”.

Many thanks for your time and help,
Ian.


#2

Do you have the ASIO SDK?

Rail


#3

Not specifically, however the Ableton Link library includes that in “modules” so I’m assuming that’s not an issue. Also, I"m building successfully in this project, and have also built without warnings in the other project.


#4

Looking at your BuildOutput.txt, these three warnings result from arguments in the generated code. If you don’t use the commandline, sampleRate or samplesPerBlockExpected, you can either remove the argument name in the implementation (cpp file), or add the line

ignoreUnused (commandline);

which will silence this warning.

The errors in your ErrorLog.txt suggest, that the AbletonLink depends on the boost library (haven’t used AbletonLink myself though).


#5

ah sorry I didn’t mention, I just left those unreferenced parameters uncommented to demonstrate that it is barebones default project with just the ableton/link header included.

I thought not having boost might be an issue too but i can build the other project fine…


#6

Well, the only information I have is the compiler output, which definitely gives an error in your 3rd party headers, modules/asio-standalone/ linking boost headers.
So before you add them and get these errors sorted, there is not much point in looking at the warnings yet. Best to double check your other project then, what you did differently.
Maybe there is a preprocessor define to enable or disable boost, if you didn’t add it there.

Good luck

EDIT: did a quick research:
Ableton-link contains asio-standalone as submodule: https://github.com/Ableton/link/tree/master/modules

Clicking on that leads to https://github.com/chriskohlhoff/asio/tree/722f7e2be05a51c69644662ec514d6149b2b7ef8/asio and digging a bit into there is a perl script bootsify.pl, which seems to copy boost headers into the correct location. I don’t know their build system, and unfortunately they moved INSTALL and README into the generated doc/.html files (bad choice IMHO), but you will probably get answers when you run the CMAKE scripts there…


#7

ahh I hadn’t noticed that, will look into it! Thanks heaps for your help!


#9

@kernelgauss I think I understand what the issue is: you are confusing IntelliSense errors for compiler errors/warnings.

https://github.com/ianacaburian/AbeLinkolnsJuce/blob/master/Logs/BuildOutput.txt contains the build output, and everything is fine (just a few warnings about unused parameters).

https://github.com/ianacaburian/AbeLinkolnsJuce/blob/master/Logs/ErrorList.txt contains the Error List from Visual Studio. However, most of these errors are not coming from the compiler. They are coming from Visual Studio itself, which parses the files and tries to figure out potential errors before you even try to build. Unfortunately, Visual Studio is not very smart (even if this feature is called “IntelliSense”) and it doesn’t know that before including the Asio headers, AbletonLink defines ASIO_STANDALONE to 1, which makes Asio not depend on Boost at all.

If you want Error List to show errors and warnings from the compiler only, you can use the dropdown and select Build Only:
image