Git Product home page Git Product logo

Comments (4)

FunMiles avatar FunMiles commented on July 18, 2024 1

Thanks @franramirez688 , I appreciate you looking into it. I also prefer the second solution as the first one adds some burden on the usage (and making use within CLion a bit more annoying to go add the flag to each configuration).
I had seen the NO_MODULE before as in

find_package(Eigen3 3.3 REQUIRED NO_MODULE)

but not the MODULE option. It makes sense it should exist.
Thanks again.

from conan.

franramirez688 avatar franramirez688 commented on July 18, 2024

Hi @FunMiles

Sorry for the delay but it was a bit hard to figure out what was happening 😓

You need to set this configuration variable: tools.cmake.cmaketoolchain:find_package_prefer_config=False. It will unset this CMake variable CMAKE_FIND_PACKAGE_PREFER_CONFIG.

So, having this CMakeLists.txt:

cmake_minimum_required(VERSION 3.20)
project(conantest LANGUAGES CXX)

# Module (system)
find_package(HDF5 REQUIRED)
# Config (Conan)
find_package(ZLIB REQUIRED)

add_executable(hd5test test.cpp)
target_link_libraries(hd5test PRIVATE HDF5::HDF5 ZLIB::ZLIB)

And running these commands:

$ conan install . --output-folder=build --build=missing -c tools.cmake.cmaketoolchain:find_package_prefer_config=False
$ cd build
$ cmake .. -GNinja -DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake" -DCMAKE_BUILD_TYPE=Release

It should work perfectly fine:

-- Using Conan toolchain: /Users/user/develop/conan/issue_mac/build/conan_toolchain.cmake
-- Conan toolchain: C++ Standard 17 with extensions ON
-- The CXX compiler identification is AppleClang 15.0.0.15000309
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found HDF5: hdf5-shared (found version "1.14.3")
-- Conan: Target declared 'ZLIB::ZLIB'
-- Found ZLIB: 1.2.11 (found version "1.2.11")
-- Configuring done (0.7s)
-- Generating done (0.0s)
-- Build files have been written to: /Users/user/develop/conan/issue_mac/build

from conan.

franramirez688 avatar franramirez688 commented on July 18, 2024

UPDATE:

@FunMiles I just found a better solution.

If you directly specify the find_package search mode in the CMakeLists.txt, it works too:

cmake_minimum_required(VERSION 3.20)
project(conantest LANGUAGES CXX)

find_package(HDF5 REQUIRED MODULE)
find_package(ZLIB REQUIRED CONFIG)

add_executable(hd5test test.cpp)
target_link_libraries(hd5test PRIVATE HDF5::HDF5 ZLIB::ZLIB)

Then, there is no need to pass an extra configuration:

$ conan install . --output-folder=build --build=missing
$ cd build
$ cmake .. -GNinja -DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake" -DCMAKE_BUILD_TYPE=Release

from conan.

franramirez688 avatar franramirez688 commented on July 18, 2024

FYI, I just opened a ticket in the CMake repository to clarify why that find_package is not falling back into Module mode:

from conan.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.