Rilascio del sistema di compilazione CMake 3.16

Introdotto rilascio di un generatore di script open build multipiattaforma CRendere 3.16, 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:

  • Aggiunto supporto per Objective C ("OBJC") e linguaggi Objective
    C++ ("OBJCXX"), che può essere abilitato tramite i comandi project() e abilita_lingua(), dopodiché il codice nei file ".m" ".mm" verrà compilato come codice Objective C e Objective C++, anziché come C++, come era prima;

  • Aggiunto il supporto per il compilatore Clang sulla piattaforma Solaris;
  • Aggiunte nuove opzioni della riga di comando: “cmake -E true|false” per stampare i codici di ritorno 0 e 1; "cmake --trace-redirect=" per reindirizzare invece le informazioni di traccia su un file
    "stderr"; il comando "cmake --loglevel" è stato rinominato in "--log-level" per allinearlo ai nomi degli altri comandi;

  • Aggiunto il comando “target_precompile_headers()” per elencare l'elenco dei file header utilizzati durante la precompilazione (riduce il tempo di compilazione);
  • Aggiunta la proprietà “UNITY_BUILD”, che attiva la modalità batch per l'elaborazione dei file sorgente nei generatori per velocizzare la build;
  • Aggiunti comandi “find_file()”, “find_library()”, “find_path()”,
    "find_package()" e "find_program()" per cercare file, librerie, percorsi, pacchetti ed eseguibili in base a variabili che definiscono percorsi di ricerca per varie categorie di file.
    Le variabili "CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH", "CMAKE_FIND_USE_CMAKE_PATH", "CMAKE_FIND_USE_CMAKE_SYSTEM_PATH", "CMAKE_FIND_USE_PACKAGE_ROOT_PATH", "CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH" e "CMAKE_FIND_USE_PACKAGE_RE" vengono utilizzate per controllare i percorsi di ricerca di base GISTRY";

  • Aggiunta la modalità “file(GET_RUNTIME_DEPENDENCIES)” al comando “file()”, che consente di recuperare ricorsivamente l'elenco delle librerie utilizzate quando si collega dinamicamente un file eseguibile o una libreria. La modalità ha sostituito il comando GetPrerequisites(), che ora è stato deprecato;
  • Il comando “ctest(1)” implementa la capacità di serializzare i test in base alle risorse richieste per ciascun test;
  • La variabile "CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY" è stata deprecata e dovrebbe essere sostituita da "CMAKE_FIND_USE_PACKAGE_REGISTRY";
  • Supporto della piattaforma AIX migliorato. Quando si utilizza la proprietà "ENABLE_EXPORTS", oltre al file eseguibile, ora viene generato un file di importazione per il linker, salvato con l'estensione ".imp". Nei plugin creati chiamando "add_library()" con l'opzione "MODULE", questo file può essere utilizzato durante il collegamento utilizzando il comando "target_link_libraries()". Il collegamento di runtime su AIX è disabilitato per impostazione predefinita perché CMake ora fornisce tutte le informazioni sui simboli necessarie per il collegamento in fase di caricamento. Per utilizzare il collegamento runtime di librerie dinamiche o moduli caricabili, è necessario specificare esplicitamente le opzioni “-Wl, -G” negli elenchi dei flag di avvio del linker, definiti tramite le variabili “CMAKE_SHARED_LINKER_FLAGS” e “CMAKE_MODULE_LINKER_FLAGS”.

Fonte: opennet.ru

Aggiungi un commento