Frage

Ich versuche zu bauen Gtest auf Visual Studio 2010. Nachdem die Lösung Datei konvertieren , ich habe versucht zu bauen, und ich habe folgende Warnmeldungen.

Warning 1   warning MSB8012: 
TargetPath(C:\Users\sucho\Desktop\gtest-1.5.0\msvc\gtest/Debug\gtest.lib) does not match
the Library's OutputFile property value (C:\Users\sucho\Desktop\gtest-1.5.0\msvc\gtest\
Debug\gtestd.lib).

This may cause your project to build incorrectly. 
To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property
values match the value specified in %(Lib.OutputFile).  
C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets

Die Meldung sagt, ich muss Setup Variablen $(OutDir), $(TargetName) und $(TargetExt) zusammen mit Eigenschaftswerten in %(Lib.OutputFile) angegeben.

Wie kann ich das mit Visual Studio (insbesondere VS 2010)?

War es hilfreich?

Lösung

Die Warnung ist unecht - vorausgesetzt, Sie Google-Test, es funktioniert gut

Sie können es aber weggehen. Rechtsklick auf das säumige Projekt und wählen Sie Eigenschaften. Wählen Sie „Bibliothek“ in der Baumansicht auf der linken Seite, und ändern Sie den „Output File“ Element auf der rechten Seite durch einen Klick auf das Feld neben der Ausgabedatei, und wählen Sie „Vererben von den Eltern oder Projektvorgaben“.

Andere Tipps

Ich sehe es. Rechtsklick auf das Gtest Projekt, Eigenschaften, Konfigurationseigenschaften, General. Stellen Sie sicher, dass die Debug-Konfiguration (oben links Combo) ausgewählt ist. Ändern Sie den Zielname-Eigenschaft auf

 $(ProjectName)d

Beachten Sie die zusätzlichen „d“ den Namen ändern von Gtest zu gtestd. Die Warnung ist ansonsten gutartig.

Ich glaube, niemand die richtige Antwort hat, ich auf diese Weise gelöst. In Projekteigenschaften Seiten, zu überprüfen, ob linker->General->Output file Spiel configuration properties->General->target name & configuration properties->General->target extension

Sie brauchen keine ‚d‘ hinzuzufügen, natürlich einfacher Satz Inherit from parent or project defaults ist, für alle drei Variablen.

Beispiel:

Linker → General → Output File = "myproject.exe"

dann:

Configuration Properties → General → Target Name = "myproject"

configuration properties → General → Target Extension = ".exe"

Diese Art von Fehler typischerweise auftreten, wenn alte Projekt eine neue Version von Visual Studio Upgrade (wie in Ihrem Fall VS2010) und auch wenn Projekteinstellungen manuell (zB Ändern Namen der ausführbaren Datei) geändert wurden. Wir wissen, VS2010 verwendet diese Makros $(ProjectName) $(TargetName) $(OutDir) $(TargetExt) zur Freisetzung / Debug-Ausgaben zu kontrollieren, aber es ist oft Geheimnis, wo sie zu ändern. Wir als typisches Resort, um den Namen der Ausgabedateien direkt über Project >> Eigenschaften zu verändern. Das heißt, wir müssen nun separat für Debug- und Release-Build der Ausgabedateien ändern und wenn es irgendwelche Abhängigkeiten ist, werden wir Fehler wie This may cause your project to build incorrectly. erhalten.

Diese Makros / Eigenschaften sind VS2010 Standardwerte aber Sie können sie selbst in VCPROJ Dateien festlegen, indem sie in Notepad bearbeiten. Hinweis Suche zunächst für die Eigenschaft in der VCPROJ Datei zuerst, wenn sie dort als Änderung seines Wert, wenn es nicht unter wie definieren.

  <PropertyGroup Label="My Values">
    <ProjectName>New_Project_Name</ProjectName>
  </PropertyGroup>

Vor Ich habe eine neue <property group> definiert diese Werte zu halten, aber Sie können sie überall definieren. Ich sehe dies am Anfang der Datei direkt nach dem Debug / Release Konfigurationsgruppe so seine überall sichtbar. Stellen Sie sicher, dass Ihre Projekteigenschaften sind Setup, sie richtig zu benutzen zu können (sollten sie das sein, was VS2010 Standardeinstellungen ist). Wenn Sie sie geändert haben, sollten Sie es von neuem Testprojekt kopieren. Sie können die anderen Makros natürlich fügen Sie in der obigen Gruppe als auch auf eingestellten Werte.

Sie können auch die neuen Werte dieses Makros durch Projekteigenschaften überprüfen. Zum Beispiel, klicken Sie in Konfigurationseigenschaften >> Allgemeinen und als in ‚Zielnamen‘ ein. Wählen Sie Bearbeiten. Es wird ein Dialogfeld mit der Schaltfläche 'MACROS >>' bringen. Klicken Sie auf das und es wird Ihnen zeigen, was der Wert jedes Makro ist. Es sollte richtig die neuen Werte widerspiegeln, dass Sie in VCPROJ Datei.

Ich habe nur versucht, eine Anwendung in Visual Studio 2019 zu kompilieren, dass ich das letzte Mal war in Visual Studio 2005 kompiliert . Ich traf die gleiche Warnung.

Ich dachte, ich würde zeigen, was ich tat, visuell mit Screenshots.

Lösungsname v Zielname

Wie Sie sehen können, meine Variablen waren beide auf Text importieren :

Ich hätte setzen nur das $(TargetName) auf ImportText mein Problem zu lösen. Allerdings werden wir diese Werte lassen, wie sie sind.

Linker / General Output File

Dies ist, wie ich die Ausgabedatei Setup hatte:

Beachten Sie, dass ich das Ausgabeziel hatte außer Kraft gesetzten Namen wie ImportText . Das war vor über 10 Jahren und ich habe nicht so viel Erfahrung haben.

Allgemein / Target Name

Also alles, was ich zu tun war, hatte hier die gleiche Einstellung vornehmen:

Nun kompiliert es Datei.

So wie Hans Passant geschrieben, müssen Sie manuell die Target Eigenschaft ändern. Dies unterscheidet zwischen VS2005 / 2008 und VS2010. Bitte beachten Sie http: // social.msdn.microsoft.com/Forums/en-US/vcprerelease/thread/3c03e730-6a0e-4ee4-a0d6-6a5c3ce4343c

Der Hintergrund ist, dass Microsoft die Bedeutung des $ (Targetname) Makro geändert. Es wird verwendet, bedeutet „was auch immer Sie Dateinamen in Linkers setzen | Ausgabedatei, minus der Erweiterung“. Sie änderten sie „standardmäßig den Namen Ihres Projekts“. (Dies ist etwas, sollten Sie nie tun, meiner Meinung nach, sie sollten ein neues Makro hinzugefügt haben).

Während VS2008 und früher die Lage war, die Dateinamen aus der Linkers Einstellung zu analysieren, offenbar waren sie nicht in der Lage auf neuere Versionen bei der Migration parsen, so dass unsere Konfigurationen gebrochen.

Die Warnung selbst ist wahrscheinlich nicht wichtig, aber wenn Sie $ (Targetnamen) verwenden, sagen, indem sie eine Batch-Datei vorbei, diese Änderung Ihres Batch-Prozess bricht.

Für uns ist die Lösung, die Dateinamen (minus Erweiterung) kopieren von Linkers | Ausgabedatei Allgemein | Zielname, und stellen Sie dann Linkers | Ausgabedatei zu „vererben Eltern / default“. Dies liegt daran, dass wir Suffixe wie "D" (für Debug), "u" für Unicode, _64 für 64-Bit und so weiter verwenden.

Auf der anderen Seite, wenn die Ausgabedatei den Namen des Projektes immer übereinstimmt, dann brauchen Sie tun gesetzt Linkers | Ausgabedatei zu „vererben default“ und du bist fertig, im Prinzip - vorausgesetzt, dass das Ausgabeverzeichnis für Ihre kompilierte Datei wollen Allgemein Spiele | Ausgabe Verzeichnis.

Diese Änderung ärgerlich ist absolut, weil es buchstäblich um Hunderte von Einstellungen bewegen beinhaltet, die alle durch schiere Faulheit auf Microsofts Teil, soweit ich sehen kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top