È stato rilasciato il generatore di script di build multipiattaforma open source CMake 4.0.0, 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 con licenza BSD.
CMake è noto per la sua semplice sintassi di script, la possibilità di estendere le funzionalità tramite moduli, il supporto per la memorizzazione nella cache, strumenti per la cross-compilazione, la generazione di file di build per un ampio range di sistemi di build e compilatori, e utilità come ctest e cpack per definire script di test e pacchetti di build, insieme a cmake-gui per la configurazione interattiva delle opzioni di build.
Variazioni principali:
- La compatibilità con le versioni di CMake precedenti alla versione 3.5 è stata interrotta. Quando ci si lega a versioni non supportate, si verificherà ora un errore nelle funzioni cmake_minimum_required() e cmake_policy().
- È stata aggiunta la variabile d'ambiente "CMAKE_POLICY_VERSION_MINIMUM" per sovrascrivere la versione minima di CMake necessaria per la build del progetto. Questa variabile consente di evitare modifiche nelle chiamate a cmake_minimum_required(VERSION) e cmake_policy(VERSION) nel progetto stesso, ad esempio, per configurare la politica delle versioni in progetti che non offrono questa possibilità.
- Nell'espressione del generatore "$" è stata aggiunta l'operazione "NATIVE_PATH" per convertire il percorso file dalla rappresentazione di CMake (dove le directory sono sempre separate da "/") al percorso di sistema (in sistemi Unix-like viene utilizzato " /", mentre in Windows si usa "\").
- Sulla piattaforma macOS, quando si utilizzano generatori di script di build basati su Ninja e generatori Makefile, se nel catalogo "/usr/bin" è presente un compilatore, viene ora mantenuto così com'è, senza legarlo al compilatore in Xcode. Nella build per macOS è stata disabilitata per impostazione predefinita la selezione del SDK e la trasmissione del flag "-isysroot" al compilatore (il SDK ora viene selezionato dal compilatore stesso, non da CMake).
- È stata aggiunta la proprietà LINK_WARNING_AS_ERROR, per cui i messaggi di avviso del linker saranno considerati errori. Per disattivare questo comportamento, è stata aggiunta l'opzione della riga di comando "--link-no-warning-as-error".
- Nell'utilità cmake è stata aggiunta l'opzione "--project-file" per specificare un nome alternativo per il file CMakeLists.txt.
- Nel generatore CPack è stata aggiunta la possibilità di creare archivi tar non compressi.
- Nella funzione target_link_libraries() e nelle variabili CMAKE_EXE_LINKER_FLAGS*, CMAKE_SHARED_LINKER_FLAGS*, CMAKE_MODULE_LINKER_FLAGS* è stata aggiunta la supporto per il prefisso "LINKER:".
- Sono state aggiunte nuove variabili:
- CMAKE_EXECUTE_PROCESS_COMMAND_ERROR_IS_FATAL,
- CMAKE__LINK_MODE,
- CMAKE__DEVICE_LINK_MODE,
- CMAKE_LINK_WARNING_AS_ERROR,
- CMAKE_MSVC_RUNTIME_CHECKS,
- CMAKE_DEBUGGER_WORKING_DIRECTORY,
- CMAKE_XCODE_SCHEME_LLDB_INIT_FILE,
- CMAKE_XCODE_SCHEME_TEST_CONFIGURATION.
- Sono state aggiunte nuove proprietà: DEBUGGER_WORKING_DIRECTORY e VS_SOLUTION_ITEMS (per allegare file al .sln per Visual Studio).
- È stata garantita la creazione di assembly CMake pronti per SunOS per le architetture sparc64 e x86_64.
Fonte: opennet.ru
