Configurare un progetto LINUX MSBuild C++ in Visual Studio

Il supporto per Linux è disponibile in Visual Studio 2017 e versioni successive.

Questo argomento descrive come configurare un progetto Linux basato su MSBuild come descritto in Creare un progetto C++ di MSBuild Linux in Visual Studio. Per i progetti CMake Linux, vedere Configurare un progetto CMake Linux.

È possibile configurare un progetto Linux in modo che abbia come destinazione una macchina Linux fisica, una macchina virtuale o il sottosistema Windows per Linux (WSL).

Visual Studio 2019 versione 16.1 e successive:

  • Quando si usa WSL come destinazione, è possibile evitare le operazioni di copia necessarie per compilare e ottenere IntelliSense necessarie quando si usa un sistema Linux remoto.

  • È possibile specificare destinazioni Linux separate per la compilazione e il debug.

Impostazioni generali

Per visualizzare le opzioni di configurazione, selezionare il menu Proprietà progetto > oppure fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni e scegliere Proprietà dal menu di scelta rapida. Vengono visualizzate le impostazioni Generale.

Screenshot della finestra di dialogo Pagine delle proprietà Configurazione generale.

Per impostazione predefinita, viene generato un file eseguibile con estensione out. Per compilare una libreria statica o dinamica, o per usare un makefile esistente, usare l'impostazione Tipo di configurazione.

Se si compila per sottosistema Windows per Linux (WSL), WSL versione 1 è limitato a 64 processi di compilazione paralleli. Questa impostazione è gestita dall'impostazione Max Parallel Compilation Jobs (Max Parallel Compilation Jobs ) nelle proprietà > di configurazione C/C++ > General.

Indipendentemente dalla versione WSL in uso, se si intende usare più di 64 processi di compilazione paralleli, è consigliabile compilare con Ninja, che in genere sarà più veloce e affidabile. Per eseguire la compilazione con Ninja, usare l'impostazione Abilita compilazione incrementale nelle proprietà > di configurazione Generale.

Per altre informazioni sulle impostazioni nelle pagine delle proprietà, vedere Informazioni di riferimento sulla pagina delle proprietà di un progetto Linux.

Impostazioni remote

Per modificare le impostazioni correlate al computer Linux remoto, configurare le impostazioni remote visualizzate in Generale.

  • Per specificare un computer Linux di destinazione remoto, usare la voce Computer di compilazione remota. In questo modo sarà possibile selezionare una delle connessioni create in precedenza. Per creare una nuova voce, vedere Connettersi al computer Linux remoto.

    Screenshot che mostra il computer di compilazione remota.

    Visual Studio 2019 versione 16.7 e successive: per specificare come destinazione sottosistema Windows per Linux (WSL), impostare l'elenco a discesa Set di strumenti della piattaforma su GCC per sottosistema Windows per Linux. Le altre opzioni remote scompariranno e al loro posto verrà visualizzato il percorso alla shell WSL predefinita:

    Screenshot che mostra il computer di compilazione WSL.

    Se si hanno installazioni WSL side-by-side, è possibile specificare un percorso diverso. Per altre informazioni sulla gestione di più distribuzioni, vedere Gestire e configurare il sottosistema Windows per Linux.

    È possibile specificare una destinazione diversa per il debug nella pagina Proprietà di configurazione>Debug.

  • La directory radice di compilazione remota determina il percorso radice in cui viene compilato il progetto nel computer Linux remoto. Se non vengono apportate modifiche, per impostazione predefinita sarà ~/projects.

  • La directory del progetto di compilazione remota è quella in cui verrà compilato il progetto specifico nel computer Linux remoto. Per impostazione predefinita, sarà $(directoryradiceremota)/$(nomeprogetto), che si espanderà in una directory denominata come il progetto corrente, nella directory radice impostata in precedenza.

Nota

Per modificare i compilatori C e C++ predefiniti o linker e archiver usati per compilare il progetto, usare le voci appropriate nella sezione Generale C/C++ > e nella sezione Generale del linker>. È possibile ad esempio specificare una versione specifica di GCC o Clang. Per altre informazioni, vedere Proprietà C/C++ (Linux C++) e Proprietà del linker (Linux C++).

Copiare le origini (solo sistemi remoti)

Nota

Questa sezione non si applica quando la destinazione è WSL.

Durante la compilazione in sistemi remoti, i file di origine del computer di sviluppo vengono copiati nel computer Linux dove vengono poi compilati. Per impostazione predefinita, tutti i file di origine del progetto di Visual Studio vengono copiati nel percorso impostato sopra. Tuttavia,è anche possibile aggiungere file di origine aggiuntivi all'elenco oppure disabilitare totalmente la copia di file di origine. Quest'ultima è l'impostazione predefinita per i progetti makefile.

  • Origini da copiare determina quali file di origine vengono copiati nel computer remoto. Per impostazione predefinita, @ (SourcesToCopyRemotely) viene impostato su tutti i file di codice sorgente nel progetto, ma non include file di asset/risorse, ad esempio immagini.

  • L'opzione Copia origini può essere attivata e disattivata per attivare e disattivare la copia dei file di origine nel computer remoto.

  • Altre origini da copiare consentono di aggiungere altri file di origine, che verranno copiati nel sistema remoto. È possibile specificare un elenco delimitato da punti e virgola, oppure usare la sintassi := per specificare un nome locale e remoto da usare:

C:\Projects\ConsoleApplication1\MyFile.cpp:=~/projects/ConsoleApplication1/ADifferentName.cpp;C:\Projects\ConsoleApplication1\MyFile2.cpp:=~/projects/ConsoleApplication1/ADifferentName2.cpp;

Eventi di compilazione

Poiché tutta la compilazione avviene in un computer remoto (o WSL), sono stati aggiunti diversi eventi alla sezione Eventi di compilazione in Proprietà del progetto. Si tratta di Evento pre-compilazione remota, Evento di pre-collegamento remoto ed Evento di post-compilazione remota che verranno eseguiti nel computer remoto prima o dopo i singoli passaggi del processo.

Screenshot della finestra di dialogo Pagine delle proprietà che mostra eventi di compilazione.

IntelliSense per le intestazioni nei sistemi remoti

Quando si aggiunge una nuova connessione in Gestione connessione, Visual Studio rileva automaticamente le directory di inclusione per il compilatore nel sistema remoto. Visual Studio quindi comprime e copia i file in una directory nel computer Windows locale. Successivamente, ogni volta che si usa la connessione in un progetto Visual Studio o CMake, le intestazioni in tali directory vengono usate per gestire IntelliSense.

Nota

In Visual Studio 2019 versione 16.5 e successive la copia dell'intestazione remota è stata ottimizzata. Le intestazioni vengono ora copiate su richiesta quando si apre un progetto Linux o si configura CMake per una destinazione Linux. La copia viene eseguita in background in base al progetto, in base ai compilatori specificati del progetto. Per altre informazioni, vedere Miglioramenti all'accuratezza e alle prestazioni di IntelliSense per Linux.

Questa funzionalità dipende dal computer Linux in cui è installato il file ZIP. Per installare lo ZIP usare questo comando apt-get:

sudo apt install zip

Per gestire la cache delle intestazioni, passare a Opzioni strumenti>, Multipiattaforma > Gestione connessioni > Gestione intestazioni remote intelliSense. Per aggiornare la cache di intestazione dopo aver apportato le modifiche nel computer Linux, selezionare la connessione remota e quindi selezionare Aggiorna. Selezionare Elimina per rimuovere le intestazioni senza eliminare la connessione stessa. Selezionare Esplora per aprire la directory locale in Esplora file. Considerare questa cartella come di sola lettura. Per scaricare le intestazioni per una connessione esistente creata prima di Visual Studio 2017 versione 15.3, selezionare la connessione e quindi selezionare Scarica.

Screenshot che mostra la finestra di dialogo Opzioni con l'opzione Multipiattaforma > Gestione connessioni > Gestione intestazioni remote intelliSense selezionata.

Screenshot che mostra la finestra di dialogo Opzioni con l'opzione Multipiattaforma > Gestione connessioni selezionata.

È possibile abilitare la registrazione per la risoluzione dei problemi:

Screenshot della finestra di dialogo Opzioni che mostra le opzioni di registrazione remota.

Impostazioni locali di destinazione Linux

Le impostazioni del linguaggio di Visual Studio non vengono propagate alle destinazioni Linux perché Visual Studio non gestisce o configura i pacchetti installati. I messaggi visualizzati nella finestra Output , ad esempio gli errori di compilazione, vengono visualizzati usando la lingua e le impostazioni locali della destinazione Linux. Sarà necessario configurare le destinazioni Linux per le impostazioni locali desiderate.

Vedi anche

Impostare il compilatore e le proprietà di compilazione
Proprietà generali di C++ (Linux C++)
Directory di VC++ (Linux C++)
Proprietà di un progetto Copia origini (Linux C++)
Proprietà di un evento di compilazione (Linux C++)