Repository: conan-io/conan

Issue:
[feature] set jobs parameter in CMakePreset buildPresets to get parallel builds when invoking cmake after conan install
### What is your suggestion?

the generated CMakePresets.json does not contain the "jobs" parameter, making it default to 1 (at least sometimes).
when manually set to a higher number, the cmake build command builds in parallel as expected.
it would be good if Conan could set this parameter while generating the preset file(s).

example "buildPresets" section before this feature is implemented:
```
    "buildPresets": [
        {
            "name": "conan-relwithdebinfo",
            "configurePreset": "conan-relwithdebinfo"
        }
    ],
```

example "buildPresets" section with the proposed feature:
```
    "buildPresets": [
        {
            "name": "conan-relwithdebinfo",
            "configurePreset": "conan-relwithdebinfo",
            "jobs": 16
        }
    ],
 ```
 
 this allows cmake to be invoked as follows, `cmake --build --target all --preset conan-relwithdebinfo` and have it build in parallel (much faster).
 

 the issue was observed on Ubuntu 23.10
```
 $ lsb_release -a
Distributor ID:	Ubuntu
Description:	Ubuntu 23.10
Release:	23.10
Codename:	mantic
```

Conan version 2.0.14
cmake version 3.27.4

### Have you read the CONTRIBUTING guide?

- [X] I've read the CONTRIBUTING guide

Discussion:
CLAassistant: [![CLA assistant check](https://cla-assistant.io/pull/badge/not_signed)](https://cla-assistant.io/conan-io/conan?pullRequest=15422) <br/>Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our [Contributor License Agreement](https://cla-assistant.io/conan-io/conan?pullRequest=15422) before we can accept your contribution.<br/><sub>You have signed the CLA already but the status is still pending? Let us [recheck](https://cla-assistant.io/check/conan-io/conan?pullRequest=15422) it.</sub>

Patch:
diff --git a/conan/tools/cmake/presets.py b/conan/tools/cmake/presets.py
index cb11e2174..27792af73 100644
--- a/conan/tools/cmake/presets.py
+++ b/conan/tools/cmake/presets.py
@@ -6,6 +6,7 @@ from conan.api.output import ConanOutput
 from conan.tools.cmake.layout import get_build_folder_custom_vars
 from conan.tools.cmake.toolchain.blocks import GenericSystemBlock
 from conan.tools.cmake.utils import is_multi_configuration
+from conan.tools.build import build_jobs
 from conan.tools.microsoft import is_msvc
 from conans.client.graph.graph import RECIPE_CONSUMER
 from conan.errors import ConanException
@@ -189,6 +190,8 @@ class _CMakePresets:
     @staticmethod
     def _build_preset_fields(conanfile, multiconfig, preset_prefix):
         ret = _CMakePresets._common_preset_fields(conanfile, multiconfig, preset_prefix)
+        build_preset_jobs = build_jobs(conanfile)
+        ret["jobs"] = build_preset_jobs
         return ret
 
     @staticmethod


Test patch:
diff --git a/conans/test/integration/toolchains/cmake/test_cmaketoolchain.py b/conans/test/integration/toolchains/cmake/test_cmaketoolchain.py
index 46f88c732..604aaf01d 100644
--- a/conans/test/integration/toolchains/cmake/test_cmaketoolchain.py
+++ b/conans/test/integration/toolchains/cmake/test_cmaketoolchain.py
@@ -1214,3 +1214,11 @@ def test_avoid_ovewrite_user_cmakepresets():
     c.run('install . -g CMakeToolchain', assert_error=True)
     assert "Error in generator 'CMakeToolchain': Existing CMakePresets.json not generated" in c.out
     assert "Use --output-folder or define a 'layout' to avoid collision" in c.out
+
+
+def test_presets_njobs():
+    c = TestClient()
+    c.save({"conanfile.txt": ""})
+    c.run('install . -g CMakeToolchain -c tools.build:jobs=42')
+    presets = json.loads(c.load("CMakePresets.json"))
+    assert presets["buildPresets"][0]["jobs"] == 42