Skip to content

Commit b06a43b

Browse files
committed
Module + import std From Imported Target
1 parent 60df3bf commit b06a43b

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

cppython/plugins/conan/builder.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ def __init__(self) -> None:
124124
def _create_conanfile(conan_file: Path, dependencies: list[ConanDependency], name: str, version: str) -> None:
125125
"""Creates a conanfile.py file with the necessary content."""
126126
template_string = """
127+
import os
127128
from conan import ConanFile
128129
from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout
129130
from conan.tools.files import copy
@@ -154,7 +155,10 @@ def package(self):
154155
cmake.install()
155156
156157
def package_info(self):
157-
self.cpp_info.libs = ["${name}"]
158+
# Use native CMake config files to preserve FILE_SET information
159+
self.cpp_info.set_property("cmake_file_name", "${name}")
160+
self.cpp_info.set_property("cmake_target_name", "${name}::${name}")
161+
self.cpp_info.builddirs.append(os.path.join("lib", "cmake", "${name}"))
158162
159163
def export_sources(self):
160164
copy(self, "CMakeLists.txt", src=self.recipe_folder, dst=self.export_sources_folder)

examples/conan_cmake/library/test_package/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
cmake_minimum_required(VERSION 4.0)
22

3+
# Enable std module support for MSVC - MUST be before project()
4+
set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD "d0edc3af-4c50-42ea-a356-e2862fe7a444")
5+
36
project(MathUtilsConsumer LANGUAGES CXX)
47

58
set(CMAKE_CXX_STANDARD 23)
69
set(CMAKE_CXX_STANDARD_REQUIRED ON)
10+
set(CMAKE_CXX_MODULE_STD ON)
711

812
find_package(mathutils REQUIRED)
913

examples/conan_cmake/library/test_package/conanfile.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,12 @@ def layout(self):
2323
def generate(self):
2424
"""Generate CMake dependencies and toolchain."""
2525
deps = CMakeDeps(self)
26+
# Skip mathutils in CMakeDeps - use native CMake config files for C++ modules
27+
deps.set_property('mathutils', 'cmake_find_mode', 'none')
2628
deps.generate()
2729
tc = CMakeToolchain(self)
30+
# Use Ninja generator - Visual Studio generator doesn't support C++ modules yet
31+
tc.generator = 'Ninja Multi-Config'
2832
tc.generate()
2933

3034
def build(self):

0 commit comments

Comments
 (0)