nmake: is it possible to disable compilation warnings? - nmake

Microsoft nmake tool will output any compiler warnings during build process. This is very annoying while building large projects (like Qt). Is it possible to disable warnings display while using nmake?

Not nmake is showing you the warnings, but the compiler/tools/scripts that are used. So you have to look into your Makefile, find out which programs nmake is calling and look into their documentation about the command line options of this tools. For example, for the Microsoft C++ command line compiler cl, you can add "/w" to disable all warnings. cl /? will show you the list of available options. For other programs, other command line options may be appropriate.
If you really do not like to see any output, you can call
nmake >nul: 2>nul:
sending all output to nirwana, but I am pretty sure that is not what you want.

For Microsoft's C/C++ compiler you can disable spesific warnings from the code using #pragma directives
#pragma warning(disable:4005)
This will disable warning 4005. When you have included the suspect code, you can re enable the warning:
#pragma warning(default:4005)

first of all, the absolute majority of warnings should be taken in consideration and "resolved".
secondly, you can use #pragma as indicated Arve
the third solution see here:
To disable all compiler warnings
With a project selected in Solution Explorer, on the Project menu click Properties.
Click the Compile tab.
Select the Disable all warnings check box.
To disable a single compiler warning
With a project selected in Solution Explorer, on the Project menu, click Properties.
Click the Compile tab.
In the Default Compiler Options table, set the Notification value for the warning to None.
To treat all compiler warnings as compilation errors
With a project selected in Solution Explorer, on the Project menu, click Properties.
Click the Compile tab.
Select the Treat all warnings as errors check box.
To treat a single compiler warning as a compilation errors
With a project selected in Solution Explorer, on the Project menu, click Properties.
Click the Compile tab.
In the Default Compiler Options table, set the Notification value for the warning to Error.

Related

How to disable code inspection errors in README.md file in Android Studio

In my GitHub README.md file, which is in the root of my Android project, I have code snippets like the following ones:
```xml
android:windowSoftInputMode="stateHidden"
```
```java
MongolToast.makeText(getApplicationContext(), "ᠰᠠᠢᠨ ᠪᠠᠢᠨ᠎ᠠ ᠤᠤ︖", MongolToast.LENGTH_LONG).show();
```
However, in Android Studio these code snippets give errors
I don't want to be warned of supposed code errors in the README file. How do I disable all errors here?
Notes:
I know how to suppress inspections normally in code with #SuppressLint or going into settings and unchecking the lint inspection. I don't want these errors to be suppressed in other areas of my project, though.
Somewhat similar question (without an answer): Android Studio - disable errors highlighting for excluded files
After doing some further research I come to conclusion that these errors are not from Android Studio itself but there are plugins for markdown format like Markdown Navigator and Markdown Support if any of them is installed and enabled then you will see above errors in README.md file.
I think this spell check is built in feature of these plugins and can not be controlled from Android Studio.
One option what I think is to disable these plugins and you are good to go.
You can disable these plugins from (Android Studio 3.1.4 MacOS) Preferences > Plugins (or File > Settings > Plugins in Linux) by unchecking them and restart (don't forget it) your Android Studio:
First you need to create a scope (Settings->Scope)
and add the files you want to keep out of scope for the Lints you wanna suppress.
Then go to Settings->Inspections, chose the inspection you wanna remove,
and then on the right choose from the drop down your scope to define the wanted behavior.
In this case, my scope is called AVOID_LINTS, and won't show any typo warnings.
EDIT
In the first step, when you create the scope, you need to add your README to the new scope.
EDIT2
Where to find the scopes:
You may search for the files you want to add, select and click include.
Remove code type annotation, change from:
```xml
android:windowSoftInputMode="stateHidden"
```
```java
MongolToast.makeText(getApplicationContext(), "ᠰᠠᠢᠨ ᠪᠠᠢᠨ᠎ᠠ ᠤᠤ︖", MongolToast.LENGTH_LONG).show();
```
change to:
```
android:windowSoftInputMode="stateHidden"
```
```
MongolToast.makeText(getApplicationContext(), "ᠰᠠᠢᠨ ᠪᠠᠢᠨ᠎ᠠ ᠤᠤ︖", MongolToast.LENGTH_LONG).show();
```
Newer versions of Android Studio starting with 2022.2.1 Flamingo (at least from Beta 1) have an option to toggle "Show problems in code fences" under Preferences > Languages & Frameworks > Markdown.
Note that this toggles all problem types at the same time (typos, warnings and errors).

Using Resharper to compile the source cant hit the breakpoint

When I use Resharper to compile my source that I always cant hit the breakpoint and the Visual Studio say that
The breakpoint will not currently be hit. The source code is different from the original version.
I must click the rebuild button to rebuild the source to hit it.
Can anyone give me some way to make the resharper to build the source well?
I don't want to do some step when I want to run app than press F5.
This may be a result of perceived differences between the source code and compiled debugging symbols. I'm not sure if this will help, but you could try allowing slightly different source code when debugging. Untick the option as shown...
Tools > Options > Debugging

Visual Studio 2013 Edit and Continue not working

With VS2013 Pro I am not able to use "Edit and Continue" when debugging an MFC program. I created a new MFC project to test.
OS is Windows 7 64-bit and I'm running Visual Studio 2013 12.0.30110.00 Update1.
Under Tools->Options->Debugging->Edit and Continue I have Enable Edit and Continue checked. I have unchecked it and checked it, but whenever I modify the code while debugging I get the following message:
The source file has changed. It no longer matches the version of the file used to build the application being debugged.
Basically I haven't changed any settings except for the tab sizes and I've set the keyboard mapping scheme to VC6.
What setting am I missing to enable edit and continue?
Edit and Continue is disabled for native code by default. To enable:
On the Tools menu, click Options.
In the Options dialog box, open the Debugging node, and select the Edit and Continue category.
In the Native-only options group, select Enable native Edit and Continue
Edit:
Steps to test native Edit and Continue is working:
Start VS 2013
Create a new MFC project:
FILE->New Project->MFC Application->OK.
Select Finish on the MFC Application Wizard.
Build and start debugging:
BUILD->Build Solution
DEBUG->Start Debugging
Break into the program:
DEBUG->Break all
Make a code change:
Open OutputWnd.cpp and find COutputWnd::OnSize (Line 80)
Insert this line at the start of the function: cx = cx / 2;
Continue execution:
DEBUG->Continue
Resize the application window to see the effect of the code change on the Output pane at the bottom. Its width should be half the required size.
Edit and continue is also a Setting for each project.
It must be set in the compiler options under C++ -> General -> Debug Information Format: "Program Database for Edit And Continue (/ZI)"
Also the linker settings must be changed. The linker has to use incremental linking. Linker -> General -> Enable Incremental Linking = Yes or (for VC 2012 users) C++ -> All Options -> Enable Function-Level Linking = Yes (/Gy)
For more information read the MSDN.
The last hint helped, but we had to
set "Image Has Safe exception handlers" = NO(/SAFESEH:NO)
in all projects of our solution!
I did all steps described above, but nothing helps (thanks all for it).
My solution was:
Project -> Properties -> Linker -> Advanced:
set
"Image Has Safe exception handlers" = NO(/SAFESEH:NO)
Apply, Ok, and Rebuild project.
Hope it helps.
For what it's worth I've been pulling my hair out on this one as well. I finally got edit and continue working by changing the following setting:
Project > Properties > Linker > All Options > "image has safe exception handlers".
It was set to No (/SAFESEH:NO). I went in and deleted it. I didn't set it to YES, or NO. I simply kept it blank. I would love to know what it means to be blank. But edit and continue is now working for me. Maybe it will help for you.
A project with a "Release Configuration" will disable Edit and Continue.
To change this
Open "Configuration Manager"
Change Configuration for the project from Release to Debug
Rebuild and debug project
Edit and Continue will also not work if your project's Platform Toolset is set to Visual Studio 2012 (v110), instead of the usual Visual Studio 2013 (v120).
This setting is in Project > Configuration Properties > General > Platform Toolset.
The solution of this problem is on the Microsoft Documentation...
If IntelliTrace is enabled and you collect both IntelliTrace events and call information, Edit and Continue is disabled.
On Visual studios' menu go on Tools>>options - Select "IntelliTrace" tab and let IntelliTrace events only checked.. Save, restart the visual studio and.......
Your Edit and Continue will work again!

Specify a default solution when debugging with the experimental instance

When working with Visual Studio Extensions and debugging using the experimental instance, is it possible to have the experimental instance automatically load a solution?
I did not see options, but may have been looking in the wrong place
Just right click on your project in Solution Explorer and hit properties. Debug tab. You'll see "command line arguments" as a box, which should contain "/rootsuffix Exp". These arguments are what are used to launch devenv.exe (the Visual Studio process). If you just add the full path to your solution after what is already there (quote if necessary), that should work just fine. It's really no different than doing devenv.exe from the command line.

Linker error after porting C++ application from VC6 to VS2005

I am getting an error while porting my application from VC6 to Visual Studio 2005.
Does anyone have any idea what this means?
mfcs80.lib(dllmodul.obj) : error
LNK2005: _DllMain#12 already defined
in MSVCRT.lib(dllmain.obj)
From http://support.microsoft.com/default.aspx?scid=kb;en-us;q148652
A LNK2005 error occurs when the CRT
library and MFC libraries are linked
in the wrong order in Visual C++
Because
The CRT libraries use weak external
linkage for the new, delete, and
DllMain functions. The MFC libraries
also contain new, delete, and DllMain
functions. These functions require the
MFC libraries to be linked before the
CRT library is linked.
So
There are two ways to resolve this
problem. The first solution involves
forcing the linker to link the
libraries in the correct order. The
second solution allows you to find the
module that is causing the problem and
to correct it.
Either
Force Linker to Link
Libraries in Correct Order
On the Project menu, click Settings.
In the Settings For view of the Project Settings dialog box, click to
select the project configuration that
is getting the link errors.
On the Link tab, click to select Input in the Category combo box.
In the Ignore libraries box, insert the library names (for example,
Nafxcwd.lib;Libcmtd.lib).
Note The linker command-line equivalent in /NOD:.
In the Object/library modules box, insert the library names. You
must make sure that these are listed
in order and as the first two
libraries in the line (for example,
Nafxcwd.lib Libcmtd.lib).
To set this option in Visual C++ .NET,
read the "Setting Visual C++ Project
Properties" online help topic.
Or
Locate and Correct the
Problem Module To view the current
library link order, follow these
steps:
On the Project menu, click Settings.
In the Settings For view of the Project Settings dialog box, click to
select the project configuration that
is getting the link errors.
On the Link tab, type /verbose:lib in the Project Options
box.
Rebuild your project. The libraries will be listed in the output
window during the linking process.
I'm sure there are a number of reason this could happen - the worst one I ever found was when trying to integrate a number of static libraries (ours) that were originally DLLS (in fact, we build the projects as both DLL & static libraries).
Our C++/CLI DLL was using the static versions of these libraries (To avoid DLL dependency issues that were causing ASP.NET loading issues when the C++/CLI Dll was being used) and was initially seeing the same linker error.
The problem turned out to be the use of AFX_MANAGE_STATE(AfxGetStaticModuleState()) macro that was needed when the code was built as a DLL but not actually needed for the static library call.
To solve this i ended up adding the following code to the stdafx.h of each project.
#ifdef OMUTILITIES_LINK_STATIC
#undef AfxGetStaticModuleState
#define AfxGetStaticModuleState AfxGetModuleState
#endif
This, of course, may not be your specific problem. But the way i eventually figured it was by turning on the /VERBOSE option for the linker and seeing who, what, where & when it was pulling in the runtime libraries. (Project Properties/Configuration Properties/Linker/Show Progress in vs2005)
You could set the linker input to ignore the troubling library in the project properties, but this may or may not work.

Resources