-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am 17.01.14 00:55, schrieb Thiago Macieira: > On sexta-feira, 17 de janeiro de 2014 00:07:07, Till Oliver Knoll > wrote: >> QMAKE_CXXFLAGS += -fobjc-arc QMAKE_CFLAGS_DEBUG += -fobjc-arc >> QMAKE_CFLAGS_RELEASE += -fobjc-arc >> > >> That is, the expected -fobjc-arc flag is only applied for >> clang++. > > "CXXFLAGS" applies to C++ and Objective C++.
Are you /sure/ you mean CXXFLAGS and not QMAKE_CXXFLAGS? In fact, I just tried setting CXXFLAGS and it does not seem to have any effect: CXXFLAGS += -fobjc-arc - -> the compiler flag is /not/ added, neither when compiling my ObjC++ *.mm files (as expected), nor to my C++ *.cpp files. QMAKE_CXXFLAGS += -fobjc-arc on the other hand /does/ add that option when compiling my C++ files, but naturally enabling Automatic Reference Counting (ARC - a feature which makes only sense when compiling Objective C/C++) has no effect in the C++ world. > If you want it for C and Objective C, you need QMAKE_CFLAGS. According to http://qt-project.org/doc/qt-5/qmake-variable-reference.html the variable QMAKE_CFLAGS does not exist (at least it is not documented). So I assume that it would work for C files in analogy to how QMAKE_CXXFLAGS works for compiling C++ files (which /is/ documented). However I really need to have the flag for Objective-C++ files, not just Objective-C files, and I did not try whether the flag would actually be used for Objective-C files at all, given the solution that I found, based on your following comment... > Note that this will get the flags for plain C and C++ sources too. > No, setting QMAKE_CFLAGS += -fobjc-arc has no effect, neither on the *.mm nor on the *.cpp files. At least that flag was not set when clang++ was invoced. And to be honest, I would not expect flags set for a C compiler to take effect when compiling C++ sources either. However the following did the trick: > You may want to use QMAKE_OBJECTIVE_CFLAGS. That did the trick! Again, that variable is not documented anywhere in the official Qt docs, but the flags was set when "clang" was invoced and I could see that it took immediate effect, since clang freaked out about missing "bridged casts" (from the Core Foundation/C world into the ObjC world), since the ObjC code in question is some Apple example code which was written in the pre-ARC era ;) > I don't see an equivalent flag for ObjC++. I don't see e.g. QMAKE_OBJECTIVE_CXXFLAGS either (and it does not work). But when you mention "see" you probably refer to various Qt project *.pro files, GIT commit messages of "Chromium" etc., as in https://www.google.ch/search?q=QMAKE_OBJECTIVE_CFLAGS There is even a link http://code.mythtv.org/cgit/mythtv/commit/?id=57baf5ba8e07657fe8286dc075182541eea32f02 where some commit message mentions: "Depending on the version of Qt you are using QMAKE_OBJECTIVE_CXXFLAGS may be ignored and QMAKE_OBJECTIVE_CFLAGS is used instead. So define both." That is pretty much the only documentation about it I "see" so far ;) Thanks a lot! Oliver P.S. If anyone reading this feels like updating the QMAKE documentation accordingly - please go ahead :) -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.22 (Darwin) Comment: GPGTools - http://gpgtools.org Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iEYEARECAAYFAlLZkI0ACgkQHVnxr7UPh0PErgCgry8Q4qK7k8nnfO3WFpD4NSdQ +YsAnRFEO/xqGrd1YpMYXT1cHDcqtpOi =t9Wt -----END PGP SIGNATURE----- _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest