Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way to suppress warnings in Xcode?

People also ask

How do I supress a warning in Xcode?

Select your project and select your target and show Build Phases . Search the name of the file in which you want to hide, and you should see it listed in the Compile Sources phase. Double-click in the Compiler Flags column for that file and enter -w to turn off all warnings for that file. Hope it will help you.

How do you ignore a warning in make?

Try make -k instead of just make . That will 'continue' rather than stop. Show activity on this post. As an alternative to diving into the build system, try setting -Wno-error in CFLAGS, which you should be able to do through the environment (or at configure time, if using the GNU build system).

How do I stop warnings in CPP?

To disable a set of warnings for a given piece of code, you have to start with a “push” pre-processor instruction, then with a disabling instruction for each of the warning you want to suppress, and finish with a “pop” pre-processor instruction.


To disable warnings on a per-file basis, using Xcode 3 and llvm-gcc-4.2 you can use:

#pragma GCC diagnostic ignored "-Wwarning-flag"

Where warning name is some gcc warning flag.

This overrides any warning flags on the command line. It doesn't work with all warnings though. Add -fdiagnostics-show-option to your CFLAGS and you can see which flag you can use to disable that warning.


there is a simpler way to suppress Unused variable warnings:

#pragma unused(varname)

EDIT: source: http://www.cocoadev.com/index.pl?XCodePragmas

UPDATE: I came accross with a new solution, a more robust one

  1. Open the Project > Edit Active Target> Build tab.
  2. Under User-Defined: find (or create if you don't find one )the key : GCC_WARN_UNUSED_VARIABLE set it to NO.

EDIT-2 Example:

BOOL ok = YES;
NSAssert1(ok, @"Failed to calculate the first day the month based on %@", self);

the compiler shows unused variable warning for ok.

Solution:

BOOL ok = YES;
#pragma unused(ok)
NSAssert1(ok, @"Failed to calculate the first day the month based on %@", self);

PS: You can also set/reset other warning: GCC_WARN_ABOUT_RETURN_TYPE : YES/NO


For gcc you can use

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wshadow-ivar"
// your code
#pragma GCC diagnostic pop

You can learn about GCC pragma here and to get the warning code of a warning go to the Report Navigator (Command+9), select the topmost build, expand the log (the '=' button on the right), and scroll to the bottom and there your warning code is within square brackets like this [-Wshadow-ivar]

For clang you can use

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wshadow-ivar"
// your code
#pragma clang diagnostic pop

In order to surpress a warning for an individual file do the following:

select the file in the xcode project. press get info go to the page with build options enter -Wno- to negate a warning:

-Wno-

e.g.

-Wno-unused-parameter

You can get the name of the warning if you look on the project settings look at the GCC warnings located at the bottom of the build tab page, by clicking on each warning it will tell you the warning parameter name:

e.g.

Warn whenever a function parameter is unused aside from its declaration. [GCC_WARN_UNUSED_PARAMETER, -Wunused-parameter]


With Objective-C, a number of serious errors only appear as warnings. Not only do I never disable warnings, I normally turn on "Treat warnings as errors" (-Werror).

Every type of warning in your code can be avoided by doing things correctly (normally by casting objects to the correct type) or by declaring prototypes when you need them.


To get rid of the warning: try creating a category interface for the object in question

@interface NSTheClass (MyUndocumentedMethodsForNSTheClass)

-(id)theUndocumentedMethod;
@end
...

@implementation myClass : mySuperclass

-(void) myMethod {
...
   [theObject theUndocumentedMethod];
...
}

As an aside, I strongly advise against calling undocumented methods in shipping code. The interface can and will change, and it will be your fault.


http://nshipster.com/pragma/#inhibiting-warnings - skip to inhibiting warnings section