Articles

In cmake, che cos’è un “progetto”?

Un progetto raggruppa logicamente un numero di target (ovvero librerie, eseguibili e passaggi di compilazione personalizzati) in una raccolta autonoma che può essere costruita da sola.

In pratica ciò significa che se hai un comando project in un CMakeLists.txt, dovresti essere in grado di eseguire CMake da quel file e il generatore dovrebbe produrre qualcosa che sia costruibile. Nella maggior parte dei codebase, avrai solo un singolo progetto per build.

Si noti tuttavia che è possibile nidificare più progetti. Un progetto di primo livello può includere una sottodirectory che è a sua volta un altro progetto autonomo. In questo caso, il comandoproject introduce ulteriori ambiti per determinati valori. Ad esempio, la variabilePROJECT_BINARY_DIR punterà sempre alla directory binaria principale del progetto corrente. Confrontalo con CMAKE_BINARY_DIR, che punta sempre alla directory binaria del progetto di primo livello. Si noti inoltre che alcuni generatori possono generare file aggiuntivi per i progetti. Ad esempio, i generatori di Visual Studio creeranno un file di soluzione .sln per ogni sottoprogetto.

Usa i sottoprogetti se la tua base di codice è molto complessa e hai bisogno che gli utenti siano in grado di costruire determinati componenti isolatamente. Questo ti dà un meccanismo molto potente per strutturare il sistema di compilazione. A causa dell’aumento della codifica e del sovraccarico di manutenzione richiesto per rendere i diversi sottoprogetti veramente autonomi, consiglierei di percorrere questa strada solo se si dispone di un vero caso d’uso. Suddividere la base di codice in target diversi dovrebbe sempre essere il meccanismo preferito per strutturare la build, mentre i sottoprogetti dovrebbero essere riservati a quei rari casi in cui è davvero necessario creare un sottoinsieme di target autonomo.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.