In previous versions of Projucer, it would generate projects with no code signing. This is my preference, as I have a very complex project and need to handle signing in a custom way. For development/debugging, I just want no code signing at all.
I don’t know when this changed, but I can at least say in the current version of the Projucer (8.0.6), it just leaves out this build setting if you don’t set up code signing:
CODE_SIGN_IDENTITY = “”;
I want this still in there and don’t know why it was removed. I added it back by modifying my local copy of Projucer.
My change was to modify the file “juicer_ProjectExport_Xcode.h” and change these couple lines from this:
if (const auto codeSigningIdentity = getCodeSigningIdentity (config); codeSigningIdentity.isNotEmpty())
result.set (iOS ? "\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\"" : "CODE_SIGN_IDENTITY",
codeSigningIdentity.quoted());
Does adding CODE_SIGN_IDENTITY="" to “Custom Xcode Flags” in the Projucer give the desired result?
Making the code change you suggested would break other peoples’ projects, because executable binaries must be signed on all Arm macs. Therefore, I don’t think this is a viable change.
When you say Arm executables must be signed, you mean for distribution, right? Because I’ve got a debug and a release build of a test app that is not signed at all. Only for local development purposes - I wouldn’t distribute it that way.
I’ll try some more with Xcode options, but over the past couple days I was not able to get it to not sign my app without modifying the Projucer. I can always just do that for myself - keep a modified version of the Projucer around for my own use.
No, on Arm Macs, all binaries must be signed in order to run at all, even for local development. The signature can be ad-hoc (added by the linker), but there must be some signature. I believe that Xcode defaults to disabling ad-hoc signing, which means that if the dedicated signing step is disabled too, then the resulting binary will be completely unsigned and will not run.
Hmm. All I can say is that my development binary is not signed on this Arm Mac, and it runs just fine. The Mac codesign tool verifies that there is no signature. I guess I’ve figured out a workaround for my situation, so I suppose I’ll just stick with that.
System Integrity Protection is enabled, but it seems I missed something with the code sign tool.
It is showing “adhoc,linker-signed” so I guess it is maybe signed with the “-” variant. I guess I need to figure out why I wasn’t able to get that happen with the regular Projucer without modifying it.
Yes this means that in fact your binary products are being signed - by the linker, by default - otherwise you wouldn’t be able to run anything at all on your system that has been passed through the compiler.