Skip to content

Commit 2b9b4e4

Browse files
authored
improve message for new CMakeDeps (#17821)
1 parent e1cb06d commit 2b9b4e4

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

conan/tools/cmake/cmakedeps2/cmakedeps.py

+10-8
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def _content(self):
6161
continue
6262

6363
if require.direct:
64-
direct_deps.append(dep)
64+
direct_deps.append((require, dep))
6565
config = ConfigTemplate2(self, dep)
6666
ret[config.filename] = config.content()
6767
config_version = ConfigVersionTemplate2(self, dep)
@@ -78,14 +78,16 @@ def _content(self):
7878
def _print_help(self, direct_deps):
7979
if direct_deps:
8080
msg = ["CMakeDeps necessary find_package() and targets for your CMakeLists.txt"]
81-
targets = []
82-
for dep in direct_deps:
83-
msg.append(f" find_package({self.get_cmake_filename(dep)})")
84-
if not dep.cpp_info.exe:
81+
link_targets = []
82+
for (require, dep) in direct_deps:
83+
note = " # Optional. This is a tool-require, can't link its targets" \
84+
if require.build else ""
85+
msg.append(f" find_package({self.get_cmake_filename(dep)}){note}")
86+
if not require.build and not dep.cpp_info.exe:
8587
target_name = self.get_property("cmake_target_name", dep)
86-
targets.append(target_name or f"{dep.ref.name}::{dep.ref.name}")
87-
if targets:
88-
msg.append(f" target_link_libraries(... {' '.join(targets)})")
88+
link_targets.append(target_name or f"{dep.ref.name}::{dep.ref.name}")
89+
if link_targets:
90+
msg.append(f" target_link_libraries(... {' '.join(link_targets)})")
8991
self._conanfile.output.info("\n".join(msg), fg=Color.CYAN)
9092

9193
def set_property(self, dep, prop, value, build_context=False):

test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_new.py

+3
Original file line numberDiff line numberDiff line change
@@ -868,6 +868,9 @@ def test_tool_requires(self):
868868
.with_tool_requires("tool/0.1")})
869869
c.run("create tool")
870870
c.run(f"install pkg -g CMakeDeps -c tools.cmake.cmakedeps:new={new_value}")
871+
assert "find_package(tool) # Optional. This is a tool-require, " \
872+
"can't link its targets" in c.out
873+
assert "target_link_libraries" not in c.out
871874
tool_config = c.load("pkg/tool-config.cmake")
872875
assert 'set(tool_INCLUDE_DIRS' not in tool_config
873876
assert 'set(tool_INCLUDE_DIR' not in tool_config

0 commit comments

Comments
 (0)