CMake iOS AUv3 Bundle identifier not backward compatible with projucer?

I’m getting different AUv3 iOS bundle identifiers when i migrate a projucer iOS project to CMake.

Projucer:
ch.toguaudioline.talunolxv2.talunolxv2AUv3

CMake
ch.toguaudioline.talunolxv2.toguaudioline.talunolxv2AUv3

The standalone identifier does match. Is there a setting to manually set this?

Just found out that the identifier is right in the AUv3’s plist file (ch.toguaudioline.talunolxv2.talunolxv2AUv3), but it does not mach the one in the General tab in XCode (ch.toguaudioline.talunolxv2.toguaudioline.talunolxv2AUv3).

The contents of the plist file is generated by the same C++ code that is linked in both Projucer and juceaide (the utility executable that is built and run when using JUCE 6’s CMake support). That’s why there is no difference there.

However, the identifier set on the AUv3 target is computed by extras/Build/CMake/JUCEUtils.cmake and I think there is a bug there. Applying the following patch should fix it:

--- a/extras/Build/CMake/JUCEUtils.cmake
+++ b/extras/Build/CMake/JUCEUtils.cmake
@@ -1099,7 +1099,7 @@ function(_juce_configure_bundle source_target dest_target)
     if(juce_kind_string STREQUAL "AUv3 AppExtension")
         get_target_property(source_bundle_id ${source_target} JUCE_BUNDLE_ID)

-        if(source_bundle_id MATCHES "\\.(.*)$")
+        if(source_bundle_id MATCHES "\\.([^.]+)$")
             set_target_properties(${dest_target} PROPERTIES
                 XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER
                     "${source_bundle_id}.${CMAKE_MATCH_1}AUv3")

@reuk FYI

1 Like

Thanks a lot. It works :slight_smile: