2 Stimmen

Wie aktiviert man die Mehrprozessor-Kompilierung im Aufruf von msbuild, aber nicht in Visual Studio

Es gibt eine Anzahl von Teams in unserem Unternehmen, die eine Teilmenge von gemeinsamen Bibliotheken verwenden. Einige Projekte können verschiedene Build-Skripte verwenden, so dass wir in einem Projekt mit msbuild mit der /m-Option bauen möchten, um Projekte parallel zu erstellen (andere Projekte verwenden devenv zum Bauen). Diese Option kann in einem Build-Skript festgelegt werden, sodass die Projekte nicht geändert werden müssen.

Die Frage ist, wie wir die /MP-Option auch auf cl.exe anwenden können, um Multiprozessor-Builds innerhalb jedes Projekts zu ermöglichen, ohne die gemeinsamen Bibliotheken zu ändern. In Visual Studio können Sie eine Benutzer-Propertysheet anwenden, die die Projektdateien nicht ändert, aber gibt es eine Möglichkeit, dasselbe für msbuild zu tun, indem Sie ein Argument oder eine Propertysheet bereitstellen, das benutzerdefinierte Build-Einstellungen anwenden kann, ohne die Projekte zu ändern?

EDIT:

Vielleicht eine einfachere Art, die Frage zusammenzufassen ist: Kann ich benutzerdefinierte Argumente zum cl.exe-Prozess hinzufügen, wenn ich msbuild aufrufe?

7voto

the_mandrill Punkte 28354

Ich habe die Antwort gefunden: Eigenschaften können an die MSBuild-Aufgabe übergeben werden. Dies kann jede der Eigenschaften für die CL-Aufgabe festlegen, sodass msbuild aufgerufen werden kann mit:

msbuild file.sln /property:MultiProcessorCompilation=true

Es gibt auch einen nützlichen Artikel zur Optimierung der parallelen Build-Performance von VS2010 hier: http://blogs.msdn.com/b/msbuild/archive/2010/03/08/tuning-c-build-parallelism-in-vs2010.aspx

4voto

Palo Misik Punkte 741

Hast du versucht, die Umgebungsvariable CL=/MP zu setzen?

1voto

KalenGi Punkte 1654

Nach der Beschreibung hier https://github.com/Microsoft/checkedc-clang/wiki/Parallel-builds-of-clang-on-Windows konnte ich MSBuild so aufrufen

MSBuild /m:2 /p:CL_MPCount=2 /p:Configuration=Release tf_tutorials_example_trainer.vcxproj

Dies ermöglichte maximal 2 parallele Projekte (MSBuild) mit jeweils 2 Kompilierungen (Cl).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X