In the recent AAX SDK 2.2.0, an update to the AAXLibrary Xcode project has changed the name of certain library files that are created.
Building the library using the "libc++ (LLVM C++ standard library with C++11 support)" option outputs a file named AAXLibrary_libcpp.a, whereas building the library with the "libstdc++ (GNU C++ standard library)" option outputs a file with the original name (AAXLibrary.a).
As far as I can tell, in the IntroJucer's current state, the new library name is not supported.
Is there support for this new library name within the IntroJucer? If not, is it likely that there will be?
I feel it is bad practice to just rename the library to conform to what the IntroJucer expects. It would be nice if there was a place where the library name could be specified or changed from default.
We are looking into a fix for this. In the meantime, I prefer to use a symlink to the correct filename. This way you do not need to rename the library if you need to rebuild the AAXLibrary.
I think the best way would be: (I'd patch it but since you already got the main repo it's waste of time)
If OS X Deployment Target 10.7>= and/or C++ Library is LLVM libc++ then
if (file - "libAAXLibrary_libcpp.a") exists
use it!
else
fall back to libAAXLibrary.a
else
just use libAAXLibrary.a
This should be compatible also with current workflow and future one.
I'd also suggest doing that for PluginLibrary (RTAS) to allow supporting older products without switching between libraries...
Thank you for the patch. However, I think the if needs to be the other way around. Otherwise XCode won't find the AAX library if you select "Default" for "C++ Library" in the Introjucer:
Perhaps which library is the default depends on the SDK version and/or the deployment target.
Because for me it seemed like the default is one value and for you another value, so we should check extensively what is the default depending on different SDK/deployment values and use that behavior in Introjucer/Projucer.
We don't need to guess, Rob from Avid explained it there in the forum https://developer.digidesign.com/phpbb/viewtopic.php?f=90&t=1510&sid=9f55e7b9703d2060663976ec3218c2b5#p6309
Those who are enrolled at the Avid program can look it up there, the others without the AAX SDK won't bother, but to summarize:
AAXLibrary.a is the one linked against lib-stdc++ (STL of g++) and AAXLibrary_libcpp.a is linking against libc++ (i.e. STL for Apples LLVM compiler).
They both exist as separate targets in the SDK and you can switch by selecting one or another Scheme.
The destinction was introduced recently and they plan to keep the names like that. You simply make sure to select the one matching the compiler you use for your projects.
Great. Too bad that it took over a year since I’ve added the fix in the SR branch. This lag makes merging much more difficult, as well as checking for correctness, because after so long it’s quite hard to remember what it was all about
Also note that might be nice to integrate the RTAS code,
currently there’s addExtraRTASTargetSettings() which is redundant with newer method:
addExtraLibsForTargetType()
FFS This has just broken my builds with JUCE5 which I’m just moving some stuff too! Can people stop renaming f***ing files. The whole /App/ /VST/ sub-folders didn’t help either. Nor ‘The Introjucer.exe’ —> “Introjucer.exe” —> “Projucer.exe”
We had a perfect balancing act where the build scripts built libAAXLibrary.a but with the libc++ library, and everything was working just fine.
What is the exact change @jimc? I am currently having an issue with building my AAX and had a quick peek to the forum if someone has reported something AAX related with 5.2.0.
Oh yeah, I fixed that earlier. Thanks.
Now I am looking at an issue on Windows, where I get LNK1104 error that it can’t open the .lib static library of the AAX sdk, during linkage.
It seems as if you are on old AAX SDK versions? Please update to the latest version (2.3.0) and you will also not have any issues with the naming of the AAX library.