conan-io / conan

Conan - The open-source C and C++ package manager
https://conan.io
MIT License
7.96k stars 952 forks source link

[bug] cmake_lib template adds find_package to all requirements in test_package #16450

Closed perseoGI closed 3 weeks ago

perseoGI commented 3 weeks ago

Describe the bug

Environment: everyone OS: everyone

The cmake_lib template of conan new command does generate not invalid CMake code, but redundant. On test_package/CMakeLists.txt it generates find_package directives of every dependency passed as -d requires parameter and it should only generate the find_package of the main package, delegating the finding of transitive dependencies to the original package.

How to reproduce it

$ conan new cmake_lib -d name=sdk -d version=1.0 -d requires="lib_a/1.0" -d requires="lib_b/1.0"
File saved: CMakeLists.txt
File saved: conanfile.py
File saved: include/sdk.h
File saved: src/sdk.cpp
File saved: test_package/CMakeLists.txt
File saved: test_package/conanfile.py
File saved: test_package/src/example.cpp
$ cat test_package/CMakeLists.txt
cmake_minimum_required(VERSION 3.15)
project(PackageTest CXX)

find_package(sdk CONFIG REQUIRED)

find_package(lib_a CONFIG REQUIRED)    # This find_packages are incorrect. 
find_package(lib_b CONFIG REQUIRED)    # Conan should delegate on sdk generator to find their transitive dependencies

add_executable(example src/example.cpp)
target_link_libraries(example sdk::sdk)
czoido commented 3 weeks ago

Closed by https://github.com/conan-io/conan/pull/16451