Come impostare $ (OutDir), $ (TargetName), $ (TargetExt) e% (Lib.OutputFile) con Visual Studio?

StackOverflow https://stackoverflow.com/questions/4650993

Domanda

Sto cercando di costruire GTEST su Visual Studio 2010. Dopo la conversione del file di soluzione , ho cercato di costruire, e ho avuto i seguenti messaggi di avviso.

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

Il messaggio dice che ho bisogno di variabili di setup $(OutDir), $(TargetName) e $(TargetExt), insieme con i valori delle proprietà specificati nel %(Lib.OutputFile).

Come posso farlo con Visual Studio (in particolare VS 2010)?

È stato utile?

Soluzione

L'avvertimento è spuria - supponendo che sta utilizzando Google prova, funziona bene

È possibile farlo andare via comunque. Fare clic destro sul progetto incriminato e selezionare Proprietà. Selezionare "Librarian" nella vista ad albero sul lato sinistro, e cambiare la voce "File di uscita" a destra facendo clic sulla casella accanto al file di output, e selezionando "Eredita dal genitore o di progetto di default".

Altri suggerimenti

Lo vedo. Fare clic con il progetto di GTEST, Proprietà, Proprietà di configurazione generale. Assicurarsi che la configurazione di debug è selezionata (combo in alto a sinistra). Modificare la proprietà Nome Target per

 $(ProjectName)d

Si noti la "d" aggiunto per cambiare il nome da GTEST a gtestd. L'avvertimento è altrimenti benigna.

Credo che nessuno ha la risposta giusta, ho risolto in questo modo:. In pagine delle proprietà di progetto, controllo se linker->General->Output file partita configuration properties->General->target name & configuration properties->General->target extension

Non c'è bisogno di aggiungere alcun 'd', ovviamente, è più semplice set di Inherit from parent or project defaults, per tutte e 3 le variabili.

Esempio:

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

quindi:

Configuration Properties → General → Target Name = "myproject"

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

Questo tipo di errori di solito sorgono quando si aggiorna vecchio progetto alla nuova versione di Visual Studio (come nel tuo caso per VS2010) ed anche se le impostazioni di progetto possono essere state modificate manualmente (ad esempio cambiare il nome eseguibile). Sappiamo VS2010 utilizza questi macro $(ProjectName) $(TargetName) $(OutDir) $(TargetExt) per controllare le uscite di rilascio / di debug, ma spesso è mistero in cui per cambiare loro. Noi di tipica località a cambiare il nome del file di output direttamente tramite Progetto >> Proprietà. Questo significa che ora abbiamo di modificare i file di output separatamente per il debug e il rilascio di compilazione e se c'era dipendenze, avremo errore come This may cause your project to build incorrectly..

Queste macro / proprietà sono VS2010 predefiniti, ma è possibile impostare da soli in .vcproj file modificandolo in blocco note. Nota di ricerca prima per la proprietà nel file .vcproj prima, se non di cambiare il suo valore, se non definirlo come qui di seguito.

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

Sopra ho definito un nuovo <property group> per mantenere questi valori, ma è possibile definire ovunque. Mi definisco questo nella parte superiore del file subito dopo il gruppo di configurazione di debug / release così la sua visibile ovunque. Assicurarsi che le proprietà del progetto sono configurato correttamente usarli correttamente (che dovrebbe essere quello che è VS2010 impostazioni di default). Se li avete cambiato si dovrebbe copiarlo da nuovo progetto di test. Naturalmente, è possibile aggiungere le altre macro da valori impostati per il gruppo di cui sopra pure.

Si può anche verificare i nuovi valori di questa macro attraverso le proprietà del progetto. Per esempio clic in Proprietà di configurazione >> Generale e poi in scatola 'di destinazione Nome'. Selezionare Modifica. Si aprirà una finestra di dialogo con il tasto 'MACROS >>'. Clicchi che e ti mostrerà ciò che il valore di ogni macro è. Si dovrebbe riflettere correttamente i nuovi valori che si imposta in .vcproj file.

stavo solo cercando di compilare un'applicazione in Visual Studio 2019 che avevo ultima compilato in Visual Studio 2005 . Ho incontrato lo stesso avvertimento.

ho pensato di mostrare quello che ho fatto visivamente con i colpi di schermo.

nome soluzione v Nome di destinazione

Come si può vedere, le mie variabili erano entrambe impostate su Importa testo :

Immagine 1

Ho potuto solo impostare il $(TargetName) a ImportText per risolvere il mio problema. Tuttavia, ci lasceremo questi valori così come sono.

Linker / General file di output

Questo è il modo ho avuto la configurazione del file di output:

Immagine 2

Si noti che ho avuto sovrascritto il nome di destinazione di uscita come ImportText . Questo è stato oltre 10 anni fa e non ho avuto più esperienza.

Generali / Nome di destinazione

Quindi, tutto quello che dovevo fare era fare la stessa regolazione qui:

Immagine 3

Ora si compila il file.

Proprio come postato Hans Passant, è necessario modificare manualmente la proprietà TargetName. Questo è diverso tra il VS2005 / 2008 e VS2010. Si prega di fare riferimento a http: // social.msdn.microsoft.com/Forums/en-US/vcprerelease/thread/3c03e730-6a0e-4ee4-a0d6-6a5c3ce4343c

Lo sfondo di questo è che Microsoft ha cambiato il significato del $ (TargetName) macro. E 'usato per significare "qualunque nome del file che si mette in Linker | file di output, meno l'estensione". Hanno cambiato a "per impostazione predefinita, il nome del progetto". (Questo è qualcosa che non si dovrebbe mai fare, a mio avviso, dovrebbero hanno aggiunto una nuova macro).

considerando che VS2008 e precedenti sono stati in grado di analizzare il nome del file fuori l'impostazione Linker, a quanto pare non erano in grado di analizzare fuori nella migrazione alle nuove versioni, lasciando le nostre configurazioni rotti.

L'avvertimento è di per sé probabilmente non è importante, ma se si utilizza $ (TargetName), dicono passandolo ad un file batch, questo cambiamento si romperà il processo batch.

Per noi, la soluzione è stata quella di copiare il nome del file (meno l'estensione) da Linker | File di output in generale | Nome di destinazione, e quindi impostare Linker | File di output a "ereditare dal genitore / default". Questo è perché usiamo suffissi come "d" (per il debug), "u" per Unicode, _64 a 64 bit e così via.

D'altra parte, se il file di output corrisponda sempre il nome del progetto, quindi tutto quello che dovete fare è impostare Linker | File di output per "default eredita" e il gioco è fatto, in linea di principio - a condizione che la directory di output che si desidera per il file compilato corrisponde Generale | Cartella di destinazione.

Questa modifica è assolutamente irritante perché comporta lo spostamento letteralmente centinaia di impostazioni in giro, tutto a causa di pigrizia da parte di Microsoft, per quanto posso vedere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top