Lansarea sistemului de compilare CMake 3.17.0

Introdus lansarea unui generator de scripturi open build multiplatformă CMake 3.17, care acționează ca o alternativă la Autotools și este folosit în proiecte precum KDE, LLVM/Clang, MySQL, MariaDB, ReactOS și Blender. Codul CMake este scris în C++ și este distribuit sub licența BSD.

CMake este remarcabil pentru furnizarea unui limbaj de scripting simplu, un mijloc de extindere a funcționalității prin module, un număr minim de dependențe (fără legarea la M4, Perl sau Python), suport pentru cache, prezența instrumentelor pentru compilare încrucișată, suport pentru generarea de build fișiere pentru o gamă largă de sisteme de compilare și compilatoare, utilitarele de prezență ctest și cpack pentru definirea scripturilor de testare și a pachetelor de construire, utilitarul cmake-gui pentru setarea interactivă a parametrilor de construcție.

Principalul îmbunătățiri:

  • A fost adăugat un nou generator de script de asamblare bazat pe setul de instrumente Ninja - „Ninja Multi-Config”, care diferă de vechiul generator prin capacitatea de a procesa mai multe configurații de asamblare simultan.
  • În generatorul de script de asamblare pentru Visual Studio a apărut capacitatea de a defini fișierele sursă asociate fiecărei configurații (surse per-config).
  • Capacitatea de a seta meta-parametri pentru CUDA („cuda_std_03”, „cuda_std_14”, etc.) a fost adăugată la instrumentele de setare a parametrilor compilatorului (Funcții de compilare).
  • S-au adăugat variabilele „CMAKE_CUDA_RUNTIME_LIBRARY” și „CUDA_RUNTIME_LIBRARY” pentru a selecta tipul de biblioteci de rulare atunci când utilizați CUDA.
  • S-a adăugat modulul „FindCUDAToolkit” pentru a determina setul de instrumente CUDA disponibil pe sistem fără a activa limba CUDA.
  • S-a adăugat comanda „--debug-find” la cmake pentru a scoate diagnostice suplimentare care pot fi citite atunci când se efectuează operațiuni de căutare. În scopuri similare, a fost adăugată variabila CMAKE_FIND_DEBUG_MODE.
  • S-a adăugat suport pentru căutarea instrumentelor CURL folosind fișierele de configurare generate de cmake „CURLConfig.cmake” la modulul „FindCURL”. Pentru a dezactiva acest comportament, este furnizată variabila CURL_NO_CURL_CMAKE.
  • Modulul FindPython a adăugat capacitatea de a căuta componente Python în medii virtuale gestionate folosind „conda”.
  • Utilitarul ctest a adăugat opțiunile „--no-tests=[error|ignore]” pentru a defini comportamentul în cazul în care nu există teste și „--repeat” pentru a seta condițiile pentru reluarea testelor (până la trecere, după timeout).
  • Proprietățile țintă de asamblare INTERFACE_LINK_OPTIONS, INTERFACE_LINK_DIRECTORIES și INTERFACE_LINK_DEPENDS sunt acum transferate printre dependențele interne ale bibliotecilor asamblate static.
  • Când utilizați setul de instrumente MinGW, căutarea fișierelor DLL cu comanda find_library este dezactivată în mod implicit (în schimb, încercarea implicită este de a importa biblioteci „.dll.a”).
  • Logica pentru selectarea utilitarului ninja în generatorul Ninja acum nu depinde de numele fișierului executabil - este folosit primul utilitar ninja-build, ninja sau samu găsit în căile definite prin variabila de mediu PATH.
  • S-a adăugat o comandă „-E rm” la cmake care poate fi folosită pentru a elimina fișiere și directoare în loc de comenzile separate „-E remove” și „-E remove_directory”.

Sursa: opennet.ru

Adauga un comentariu