Rilascio del sistema di compilazione CMake 3.17.0

Introdotto rilascio di un generatore di script open build multipiattaforma CRendere 3.17, che funge da alternativa ad Autotools e viene utilizzato in progetti come KDE, LLVM/Clang, MySQL, MariaDB, ReactOS e Blender. Il codice CMake è scritto in C++ e distribuito sotto la licenza BSD.

CMake si distingue per fornire un linguaggio di scripting semplice, un mezzo per estendere le funzionalità tramite moduli, un numero minimo di dipendenze (nessun legame con M4, Perl o Python), supporto per la memorizzazione nella cache, presenza di strumenti per la compilazione incrociata, supporto per la generazione di build file per un'ampia gamma di sistemi di compilazione e compilatori, la presenza di utilità ctest e cpack per definire script di test e creare pacchetti, utilità cmake-gui per impostare in modo interattivo i parametri di compilazione.

Il principale miglioramenti:

  • È stato aggiunto un nuovo generatore di script di assemblaggio basato sul toolkit Ninja: "Ninja Multi-Config", che differisce dal vecchio generatore per la capacità di elaborare più configurazioni di assemblaggio contemporaneamente.
  • Nel generatore di script di assembly per Visual Studio apparso la possibilità di definire file di origine associati a ciascuna configurazione (origini per configurazione).
  • La possibilità di impostare meta parametri per CUDA (“cuda_std_03”, “cuda_std_14”, ecc.) è stata aggiunta agli strumenti per l'impostazione dei parametri del compilatore (Funzionalità di compilazione).
  • Aggiunte variabili "CMAKE_CUDA_RUNTIME_LIBRARY" e "CUDA_RUNTIME_LIBRARY" per selezionare il tipo di librerie runtime quando si utilizza CUDA.
  • Aggiunto il modulo "FindCUDAToolkit" per determinare il toolkit CUDA disponibile sul sistema senza abilitare la lingua CUDA.
  • Aggiunto il comando "--debug-find" a cmake per generare ulteriori diagnostici leggibili durante l'esecuzione di operazioni di ricerca. Per scopi simili è stata aggiunta la variabile CMAKE_FIND_DEBUG_MODE.
  • Aggiunto supporto per la ricerca di strumenti CURL utilizzando i file di configurazione generati da cmake "CURLConfig.cmake" al modulo "FindCURL". Per disabilitare questo comportamento, viene fornita la variabile CURL_NO_CURL_CMAKE.
  • Il modulo FindPython ha aggiunto la possibilità di cercare componenti Python in ambienti virtuali gestiti tramite “conda”.
  • L'utility ctest ha aggiunto le opzioni “--no-tests=[error|ignore]” per definire il comportamento in caso di assenza di test e “--repeat” per impostare le condizioni per la riesecuzione dei test (until-pass, dopo il timeout).
  • Le proprietà di destinazione dell'assembly INTERFACE_LINK_OPTIONS, INTERFACE_LINK_DIRECTORIES e INTERFACE_LINK_DEPENDS vengono ora trasferite tra le dipendenze interne delle librerie assemblate staticamente.
  • Quando si utilizza il toolkit MinGW, la ricerca di file DLL con il comando find_library è disabilitata per impostazione predefinita (il tentativo predefinito è invece quello di importare le librerie ".dll.a").
  • La logica per selezionare l'utilità ninja nel generatore Ninja ora non dipende dal nome del file eseguibile: viene utilizzata la prima utilità ninja-build, ninja o samu trovata nei percorsi definiti tramite la variabile di ambiente PATH.
  • Aggiunto un comando "-E rm" a cmake che può essere utilizzato per rimuovere file e directory invece dei comandi separati "-Eremove" e "-E rimuovi_directory".

Fonte: opennet.ru

Aggiungi un commento