Das Folgende stammt aus einem regulären VS2010 C ++ - Projekt.
%Vor% Wenn ich PreprocessorDefinitions
bearbeite, kann ich eine Definition festlegen, die vom Präprozessor verwendet wird. Ich kann das in meinem Code sehen über #ifdef
etc.
Wenn ich jedoch folgendes benutze:
%Vor% Ich kann auch über die Nachricht sehen, dass PreprocessorDefinitions
den Wert enthält, den ich über Properties="PreprocessorDefinitions=THISGETSSETBUTDOESNOTHING"
gesetzt habe, aber ich kann meinen Build nicht mit #ifdef
usw. steuern.
Wenn ich ein reguläres Setup verwende und versuche, PreprocessorDefinitions
mit <Message Text="PreprocessorDefinitions: $(PreprocessorDefinitions)"
auszugeben, ist das Feld eigentlich leer und enthält nicht das erwartete <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
, obwohl ich einen dieser Schlüssel verwenden kann, um mein Build mit #ifdef
usw. zu steuern.
Properties
element? Sie können dies nicht tun, ohne demo.vcxproj
zu ändern, da Sie Zugriff auf PreprocessorDefinitions
von CLCompile
benötigen, was kein PropertyGroup
ist und daher nicht über die MSBuild-Befehlszeile übergeben werden kann.
Sie können die Präprozessor-Definitionen in der GUI über Projekteigenschaften - & gt; Konfigurationseigenschaft - & gt; C / C ++ - & gt; Präprozessor oder bearbeiten Sie das XML direkt:
%Vor%In Ihrem MSBuild-Projekt:
%Vor%Dies entspricht der Ausführung von MSBuild.exe als:
%Vor% Dies kann durchgeführt werden, ohne das ursprüngliche Projekt zu ändern: Das erste, was in Microsoft.Cpp.Targets
gemacht wird, ist normalerweise eines der letzten Dinge, die in ein normales C ++ Projekt importiert werden. Überprüfen Sie, ob es eine Eigenschaft namens ForceImportBeforeCppTargets
und if gibt Also, importiere es.
Nehmen wir an, Sie möchten ADDITIONAL
zu den Präprozessordefinitionen hinzufügen, indem Sie eine Datei 'override.props' erstellen (für die vollständige Automatisierung verwenden Sie die WritelinesToFile
Aufgabe, um die Datei zu erstellen):
Und ruf
an %Vor%oder über die Befehlszeile, die
wäre %Vor%Hinweis wie richb im Kommentar darauf hinweist, funktioniert das obige nur, wenn override.props von den Nachschlage-Regeln von Msbuild gefunden werden kann. Um sicherzustellen, dass es immer gefunden wird, geben Sie einfach den vollständigen Pfad an.
Tags und Links msbuild