Skip to content

Commit 67f9b32

Browse files
authored
Add build_folder parameter in basic_layout (#18442)
* add build_folder * test and use subproject path
1 parent fdc9d52 commit 67f9b32

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

conan/tools/layout/__init__.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
import os
22

33

4-
def basic_layout(conanfile, src_folder="."):
4+
def basic_layout(conanfile, src_folder=".", build_folder=None):
55
subproject = conanfile.folders.subproject
66

77
conanfile.folders.source = src_folder if not subproject else os.path.join(subproject, src_folder)
8-
conanfile.folders.build = "build" if not subproject else os.path.join(subproject, "build")
9-
if conanfile.settings.get_safe("build_type"):
10-
conanfile.folders.build += "-{}".format(str(conanfile.settings.build_type).lower())
8+
if build_folder:
9+
conanfile.folders.build = build_folder if not subproject else os.path.join(subproject, build_folder)
10+
else:
11+
conanfile.folders.build = "build" if not subproject else os.path.join(subproject, "build")
12+
if conanfile.settings.get_safe("build_type"):
13+
conanfile.folders.build += "-{}".format(str(conanfile.settings.build_type).lower())
1114
conanfile.folders.generators = os.path.join(conanfile.folders.build, "conan")
1215
conanfile.cpp.build.bindirs = ["."]
1316
conanfile.cpp.build.libdirs = ["."]
Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
import os
22
import platform
33
import textwrap
4+
import pytest
45

56
from conan.test.utils.tools import TestClient
67

7-
8-
def test_basic_layout_subproject():
8+
@pytest.mark.parametrize("basic_layout, expected_path", [
9+
('basic_layout(self)', 'build-release'),
10+
('basic_layout(self, build_folder="custom_build_folder")', 'custom_build_folder')])
11+
def test_basic_layout_subproject(basic_layout, expected_path):
912
c = TestClient()
10-
conanfile = textwrap.dedent("""
13+
conanfile = textwrap.dedent(f"""
1114
from conan import ConanFile
1215
from conan.tools.layout import basic_layout
1316
class Pkg(ConanFile):
@@ -16,10 +19,10 @@ class Pkg(ConanFile):
1619
def layout(self):
1720
self.folders.root = ".."
1821
self.folders.subproject = "pkg"
19-
basic_layout(self)
22+
{basic_layout}
2023
""")
2124
c.save({"pkg/conanfile.py": conanfile})
2225
c.run("install pkg")
2326
ext = "sh" if platform.system() != "Windows" else "bat"
24-
assert os.path.isfile(os.path.join(c.current_folder, "pkg", "build-release", "conan",
27+
assert os.path.isfile(os.path.join(c.current_folder, "pkg", expected_path, "conan",
2528
"conanautotoolstoolchain.{}".format(ext)))

0 commit comments

Comments
 (0)