Määrittää koko projektin nimen, version ja kielten käyttöönoton.
project(<PROJECT-NAME> )project(<PROJECT-NAME> ]]] )
Määrittää projektin nimen ja tallentaa nimen muuttujaanPROJECT_NAME
. Lisäksi tämä asettaa muuttujat
-
PROJECT_SOURCE_DIR
,<PROJECT-NAME>_SOURCE_DIR
-
PROJECT_BINARY_DIR
,<PROJECT-NAME>_BINARY_DIR
Jos VERSION
on määritetty VERSION
, annettujen komponenttien on oltava ei-negatiivisia kokonaislukuja.Jos VERSION
ei ole määritetty, oletusversio on tyhjä merkkijono.VERSION
-vaihtoehtoa ei saa käyttää, ellei käytäntö CMP0048
ole NEW
.
Komento project()
tallentaa versionumeron ja sen osat muuttujiin
-
PROJECT_VERSION
,<PROJECT-NAME>_VERSION
-
PROJECT_VERSION_MAJOR
,<PROJECT-NAME>_VERSION_MAJOR
-
PROJECT_VERSION_MINOR
,<PROJECT-NAME>_VERSION_MINOR
-
PROJECT_VERSION_PATCH
,<PROJECT-NAME>_VERSION_PATCH
-
PROJECT_VERSION_TWEAK
,<PROJECT-NAME>_VERSION_TWEAK
Muuttujat, jotka vastaavat määrittelemättömiä versioita, asetetaan tyhjään merkkijonoon (jos käytäntö CMP0048
on asetettu NEW
).
Vaihtoehtoisesti voit määrittää, mitä kieliä projektisi tukee.Esimerkkikieliä ovat C
, CXX
(eli C++), Fortran
jne.Oletusarvoisesti C
ja CXX
ovat käytössä, jos kieliasetuksia ei ole annettu. Määritä kieli NONE
tai käytä avainsanaa LANGUAGES
ja listaa ei kieliä, jos haluat ohittaa minkään kielen ottamisen käyttöön.
Jos on olemassa muuttuja nimeltä CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE
,muuttujan osoittama tiedosto sisällytetään projektikomennon viimeisenä vaiheena.
Projektin ylimmän tason CMakeLists.txt
-tiedoston on sisällettävä kirjaimellinen suora suorakutsu komennolle project()
; komennon lataaminen komennon include()
kautta ei riitä. Jos tällaista kutsua ei ole, CMake lisää implisiittisesti ylätasolle kutsun, joka ottaa käyttöön oletuskielet (C
ja CXX
).
Huomautus
Kutsu cmake_minimum_required()
-komento ylätason CMakeLists.txt
-tiedoston alussa jo ennen kuin kutsut project()
-komentoa. On tärkeää määrittää versio- ja politiikka-asetukset ennen muiden komentojen kutsumista, joiden käyttäytymiseen ne voivat vaikuttaa. Katso myös policy CMP0000
.
.