Articles

In cmake, Wat is een “project”?

een project groepeert logischerwijs een aantal doelen (dat wil zeggen bibliotheken, uitvoerbare bestanden en aangepaste bouwstappen) in een op zichzelf staande verzameling die op zichzelf kan worden gebouwd.

in de praktijk betekent dit dat als je een project commando hebt in een CMakeLists.txt, je in staat moet zijn om CMake uit dat bestand te draaien en de generator iets moet produceren dat gebouwd kan worden. In de meeste codebases heb je slechts één project per build.

merk echter op dat u meerdere projecten kunt nestelen. Een top-level project kan een subdirectory bevatten die op zijn beurt een ander zelfstandig project is. In dit geval introduceert het commando project extra scoping voor bepaalde waarden. Bijvoorbeeld, dePROJECT_BINARY_DIR variabele zal altijd naar de root binaire map van het huidige project wijzen. Vergelijk dit met CMAKE_BINARY_DIR, die altijd verwijst naar de binaire map van het top-level project. Merk ook op dat bepaalde generatoren extra bestanden voor projecten kunnen genereren. Bijvoorbeeld, de Visual Studio generators zullen een .sln oplossingsbestand aanmaken voor elk subproject.

gebruik subprojecten als uw codebase zeer complex is en u gebruikers nodig hebt om bepaalde componenten geïsoleerd te kunnen bouwen. Dit geeft u een zeer krachtig mechanisme voor het structureren van het bouwsysteem. Vanwege de verhoogde codering en onderhoud overhead die nodig is om de verschillende sub-projecten echt self-contained, ik zou adviseren om alleen die weg te gaan als je een echte use case Voor het. Het splitsen van de codebase in verschillende doelen zou altijd de voorkeur moeten hebben voor het structureren van de build, terwijl subprojecten gereserveerd moeten worden voor die zeldzame gevallen waarin je echt een subset van doelen zelfstandig moet maken.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.