From ba0a3496f14277b388894bc5aba207de24313a16 Mon Sep 17 00:00:00 2001 From: Hing Wah Wan Date: Thu, 27 Feb 2025 15:44:12 -0800 Subject: [PATCH 1/2] Fix cmake target not generated with CMake2 generator when only system_libs are defined --- conan/tools/cmake/cmakedeps2/target_configuration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conan/tools/cmake/cmakedeps2/target_configuration.py b/conan/tools/cmake/cmakedeps2/target_configuration.py index dd3b7670a11..9af4ea6143f 100644 --- a/conan/tools/cmake/cmakedeps2/target_configuration.py +++ b/conan/tools/cmake/cmakedeps2/target_configuration.py @@ -154,7 +154,7 @@ def _get_libs(self, cpp_info, pkg_name, pkg_folder, pkg_folder_var) -> dict: return libs def _get_cmake_lib(self, info, components, pkg_folder, pkg_folder_var): - if info.exe or not (info.includedirs or info.libs): + if info.exe or not (info.includedirs or info.libs or info.system_libs): return includedirs = ";".join(self._path(i, pkg_folder, pkg_folder_var) From 02f21d0e774bcd7751e5f9ee299d64247e7e8734 Mon Sep 17 00:00:00 2001 From: memsharded Date: Mon, 3 Mar 2025 17:33:57 +0100 Subject: [PATCH 2/2] add test --- .../cmake/cmakedeps2/test_cmakedeps.py | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/test/integration/toolchains/cmake/cmakedeps2/test_cmakedeps.py b/test/integration/toolchains/cmake/cmakedeps2/test_cmakedeps.py index 83420d6d6e6..76f0aee4b64 100644 --- a/test/integration/toolchains/cmake/cmakedeps2/test_cmakedeps.py +++ b/test/integration/toolchains/cmake/cmakedeps2/test_cmakedeps.py @@ -152,3 +152,29 @@ class TestConan(ConanFile): assert "WARN: Using the new CMakeConfigDeps generator" in c.out c.run("install app -c tools.cmake.cmakedeps:new=recipe_will_break") assert "WARN: Using the new CMakeConfigDeps generator" in c.out + + +def test_system_wrappers(): + c = TestClient() + conanfile = textwrap.dedent(""" + import os + from conan.tools.files import copy + from conan import ConanFile + class TestConan(ConanFile): + name = "lib" + version = "system" + package_type = "shared-library" + + def package_info(self): + self.cpp_info.includedirs = [] + self.cpp_info.libdirs = [] + self.cpp_info.system_libs = ["my_system_cool_lib"] + """) + c.save({"conanfile.py": conanfile}) + c.run("create .") + + c.run(f"install --requires=lib/system -g CMakeConfigDeps " + f"-c tools.cmake.cmakedeps:new={new_value}") + cmake = c.load("lib-Targets-release.cmake") + assert "add_library(lib::lib INTERFACE IMPORTED)" in cmake + assert "target_link_libraries(lib::lib INTERFACE my_system_cool_lib)" in cmake