- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Did you mean problem comes with VS 2010 or with earlier versions too?
Do you face problem with small projects also.. If you have problem with large project, then only, you can give this a try :-- (as large programs may behave non-optimally under /Qipo as given in doc). Though I am not very sure it can cause the large project to re-link always when F5 pressed, you can go through it:--
I would suggest to experiment with -ipoN option (try N being bigger or equal than 2) and see what you get.
======================== help excerpt ======================================================
IPO for Large Programs
In most cases, IPO generates a single object file for the link-time compilation. This behavior is not optimal for very large programs, perhaps even making it impossible to use -ipo (Linux* and Mac OS* X) or /Qipo (Windows*) on the application.
The compiler provides two methods to avoid this problem. The first method is an automatic size-based heuristic, which causes the compiler to generate multiple object files for large link-time compilations. The second method is to manually instruct the compiler to perform multi-object IPO.
Use the -ipoN (Linux and Mac OS X) or /QipoN (Windows) option and pass an integer value in the place of N.
Use the -ipo-separate (Linux and Mac OS X) or /Qipo-separate (Windows) option.
The number of true object files generated by the link-time compilation is invisible to the user unless either the -ipo-c or -ipo-S (Linux and Mac OS X) or /Qipo-c or /Qipo-S (Windows) option is used.
Regardless of the method used, it is best to use the compiler defaults first and examine the results. If the defaults do not provide the expected results then experiment with generating more object files.
You can use the -ipo-jobs (Linux and Mac OS X) or /Qipo-jobs (Windows) option to control the number of commands, or jobs, executed during parallel builds.
Using -ipoN or /QipoN to Create Multiple Object Files
If you specify -ipo0 (Linux and Mac OS X) or /Qipo0 (Windows), which is the same as not specifying a value, the compiler uses heuristics to determine whether to create one or more object files based on the expected size of the application. The compiler generates one object file for small applications, and two or more object files for large applications. If you specify any value greater than 0, the compiler generates that number of object files, unless the value you pass a value that exceeds the number of source files. In that case, the compiler creates one object file for each source file then stops generating object files.
The following example commands demonstrate how to use -ipo2 (Linux and Mac OS X) or /Qipo2 (Windows) to compile large programs.
Operating System Example Command
Linux and Mac OS X
icpc -ipo2 -c a.cpp b.cpp
Windows
icl /Qipo2 /c a.cpp b.cpp
Because the example command shown above, the compiler generates object files using an OS-dependent naming convention. On Linux and Mac OS X, the example command results in object files named ipo_out.o, ipo_out1.o, ipo_out2.o, and ipo_out3.o. On Windows, the file names follow the same convention; however, the file extensions will be .obj.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
[cpp]#include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { return 0; }[/cpp]The problem exists not only with the large project... I think it is some kind of integration error, as I can see in debug output of Visual Studio 2010 IDE (in dbgview), complier generates files like ipo_42285obj.obj on the first build, but requires an another (ipo_88833obj.obj for example) on next compile, MSBuild suggests to create new ipo_88833obj.obj because it does not exists and relinks the project.
[bash][4652] Project 'D:TempIPOTestIPOTest.vcxproj' not up to date because 1 build outputs were missing. [4652] up to date is missing: 'D:TEMPIPOTESTIPO_26205OBJ.OBJ' [/bash]
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have the same problem with C++ Composer XE 2011. Disabling whole program optimization by setting \Qnoipo in the linker properties fixes it, but that obviously isn't very satisfactory because performance will be reduced.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page