Na ovoj stranici

CMake postavke

CMakePresets.json ima opcije za izgradnje za cijeli projekt, dok CMakeUserPresets.json ima opcije za vaše lokalne izgradnje.

Stvorite datoteke s predlošcima u formatu opisanom u cmake-presets(7) i spremite ih u korijenski direktorij projekta. Zatim ih možete vidjeti u prikazu projekata.

Qt Creator podržava presete za configure, build i test do verzije 5 (uvedeni u CMakeu 3.24), ali ne provodi provjeru verzije. Čita i koristi sva polja iz verzije 5 ako su prisutna.

Možete uvesti presete prvi put kada otvorite projekt, kada ne postoji datoteka CMakeLists.txt.user ili kada ste onemogućili sve komplete u projektu.

Otvaranje projekta koji ima CMake prednameštanja

Presete možete pregledati u polju za postavke izgradnje ( Initial Configuration ) i u polju za konfiguraciju okruženja ispod njega.

Konfiguracija CMake okruženja

Za ažuriranje promjena u datoteci CMakePresets.json, idite na Build, odaberite Reload CMake Presets i zatim odaberite datoteku s presetima za učitavanje.

Konfiguriraj presete

Sljedeći configure preseti nalažu CMakeu da koristi zadani generator na platformi i određuju direktorij za izgradnju za sve vrste izgradnje. NOT_COMMON_VALUE se prikazuje u Initial Parameters, a AN_ENVIRONMENT_FLAG u polju za konfiguraciju okruženja.

{
  "version": 1,
  "configurePresets": [
    {
      "name": "preset",
      "displayName": "preset",
      "binaryDir": "${sourceDir}/build/preset",
      "cacheVariables": {
        "NOT_COMMON_VALUE": "NOT_COMMON_VALUE"
        },
      "environment": {
        "AN_ENVIRONMENT_FLAG": "1"
        }
      },
      "vendor": {
        "qt.io/QtCreator/1.0": {
           "AskBeforePresetsReload": false,
           "AskReConfigureInitialParams": false,
           "AutorunCMake": false,
           "PackageManagerAutoSetup": false,
           "ShowAdvancedOptionsByDefault": true,
           "ShowSourceSubFolders": false,
           "UseJunctionsForSourceAndBuildDirectories": true
           }
      }
  ]
}

Za više informacija o postavkama CMake projekta u odjeljku vendor pogledajte CMake Qt Vendor Presets.

MinGW primjer

Sljedeći primjer konfigurira Qt projekt s:

  • MinGW kompajler
  • direktorij za izgradnju – <sourceDir>/build-release
  • vrsta izgradnje – CMAKE_BUILD_TYPE kao Release
  • generator – MinGW Makefiles
  • putanju do CMake izvršne datoteke
  • put do instalacije Qt-a putem CMAKE_PREFIX_PATH
  • GNU gdb 11.2.0 za MinGW 11.2.0 64-bitni otklonivač pogrešaka
{
  "version": 1,
  "configurePresets": [
    {
      "name": "mingw",
      "displayName": "MinGW 11.2.0",
      "generator": "MinGW Makefiles",
      "binaryDir": "${sourceDir}/build-release",
      "cmakeExecutable": "C:/Qt/Tools/CMake_64/bin/cmake.exe",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release",
        "CMAKE_PREFIX_PATH": "C:/Qt/6.4.0/mingw_64"
      },
      "environment": {
        "PATH": "C:/Qt/Tools/mingw1120_64/bin;$penv{PATH}"
      },
      "vendor": {
        "qt.io/QtCreator/1.0": {
          "debugger": {
            "DisplayName": "GNU gdb 11.2.0 for MinGW 11.2.0 64-bit",
            "Abis": ["x86-windows-msys-pe-64bit"],
            "Binary": "C:/Qt/Tools/mingw1120_64/bin/gdb.exe",
            "EngineType": 1,
            "Version": "11.2.0"
          }
        }
      }
  ]
}

Za ubrzanje procesa na Windowsu navedite CMAKE_C_COMPILER i CMAKE_CXX_COMPILER u odjeljku cacheVariables.

Za moguće vrijednosti nekih postavki u odjeljku debugger pogledajte CMake Qt Vendor Presets.

Primjer Ninja generatora

Sljedeći configure i build preseti postavljaju Ninja Multi-Config kao generator, dodaju korake izgradnje za Debug i Release te navode putanju do ninja.exe kao vrijednost varijable CMAKE_MAKE_PROGRAM:

{
  "version": 2,
  "configurePresets": [
    {
      "name": "ninja-nmc",
      "displayName": "Ninja Multi-Config MinGW",
      "generator": "Ninja Multi-Config",
      "binaryDir": "${sourceDir}/build",
      "cacheVariables": {
        "CMAKE_CONFIGURATION_TYPES": "Debug;Release",
        "CMAKE_PREFIX_PATH": "C:/Qt/6.4.0/mingw_64",
        "CMAKE_MAKE_PROGRAM": "C:/Qt/Tools/Ninja/ninja.exe"
      },
      "environment": {
        "PATH": "c:/Qt/Tools/mingw1120_64/bin;$penv{PATH}"
      }
    }
  ],
  "buildPresets": [
    {
      "name": "release",
      "displayName": "Ninja Release",
      "configurePreset": "ninja-nmc",
      "configuration": "Release"
    },
    {
      "name": "debug",
      "displayName": "Ninja Debug",
      "configurePreset": "ninja-nmc",
      "configuration": "Debug"
    }
  ]
}

Ovaj primjer pretpostavlja da je putanja do CMake izvršne datoteke postavljena u Preferences > CMake > Tools.

MSVC primjer

Kada koristite MSVC kompajlere s NMAKE Makefile-ovima, Ninja ili Ninja Multi-Config generatorima, možete koristiti strategiju external za polja architecture i toolset. Time se Qt Creator omogućuje da pripremi okruženje Visual C++ prije pozivanja CMakea.

Na primjer:

"generator": "Ninja Multi-Config",
"toolset": {
  "value": "v142,host=x64",
  "strategy": "external"
},
"architecture": {
  "value": "x64",
  "strategy": "external"
},

Ako koristite MSVC kompajlere s generatorima koji nisu VS i imate više kompajlera u PATH, možda ćete također morati navesti kompajler koji ćete koristiti u cacheVariables ili environmentVariables:

"generator": "Ninja Multi-Config",
"toolset": {
  "value": "v142,host=x64",
  "strategy": "external"
},
"architecture": {
  "value": "x64",
  "strategy": "external"
},
"cacheVariables": {
  "CMAKE_C_COMPILER": "cl.exe",
  "CMAKE_CXX_COMPILER": "cl.exe"
}

Primjer prekompilacije

Sljedeći primjer konfigurira Qt projekt za križnu kompilaciju na macOS-u za Windows i pokretanje s emulatorom wine na macOS-u:

  • generator – Ninja
  • direktorij za izgradnju – <sourceDir>/build-release
  • LLVM/MinGW alatni lanac
  • vrsta konfiguracije – CMAKE_BUILD_TYPE kao Release
  • Debugger LLDB 18.1.6
  • wine emulator
{
  "version": 4,
  "configurePresets": [
    {
      "name": "llvm-mingw",
      "displayName": "LLVM-MinGW 18.1.6",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build-release",
      "toolchainFile": "llvm-mingw.cmake",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release",
        "CMAKE_CROSSCOMPILING_EMULATOR": "/opt/homebrew/bin/wine"
      },
      "vendor": {
        "qt.io/QtCreator/1.0": {
          "debugger": {
            "DisplayName": "LLDB 18.1.6 (CMake Preset)",
            "Abis": ["x86-darwin-generic-mach_o-64bit", "arm-darwin-generic-mach_o-64bit"],
            "Binary": "/Users/jdoe/llvm-mingw/bin/lldb",
            "EngineType": 256,
            "Version": "18.1.6"
          }
        }
      }
    }
  ]
}

Uvjeti korištenja

Sljedeći configure preseti koriste se ako odgovaraju condition u. To jest, ako je hostSystemName jednak Linux u, koriste se preseti linux a, a ako je jednak Windows u, koriste se preseti windows a.

{
  "version": 3,
  "configurePresets": [
    {
      "name": "linux",
      "displayName": "Linux GCC",
      "binaryDir": "${sourceDir}/build",
      "cacheVariables": {
        "CMAKE_PREFIX_PATH": "$env{HOME}/Qt/6.4.0/gcc_64"
      },
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Linux"
      }
    },
    {
      "name": "windows",
      "displayName": "Windows MSVC",
      "binaryDir": "${sourceDir}/build",
      "cacheVariables": {
        "CMAKE_PREFIX_PATH": "$env{SYSTEMDRIVE}/Qt/6.4.0/msvc2019_64"
      },
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Windows"
      }
    }
  ]
}

Postavke testova

Sljedeći testni preseti nalažu CMakeu da prekine izvršavanje testa i ispiše izlazni rezultat testnog programa pri neuspjehu, kao i da prikaže pogrešku ako se test ne može pronaći.

{
  "version": 3,
  "testPresets": [
  {
    "name": "default",
    "configurePreset": "default",
    "output": {"outputOnFailure": true},
    "execution": {"noTestsAction": "error", "stopOnFailure": true}
    }
  ],
}

Vidi također Konfiguracija izgradnje CMakea, CMake, CMake Qt Vendor Presets i Alat SDK.

Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.