mesonbuild / meson

The Meson Build System
http://mesonbuild.com
Apache License 2.0
5.49k stars 1.59k forks source link

Dependency via cmake: glfw from conan not working #8339

Open Sahnvour opened 3 years ago

Sahnvour commented 3 years ago

I'm using conan inside my meson script to retrieve dependencies.

Usually it works well, but the glfw package from conan-center does not.

Run-time dependency glfw found: NO (tried pkgconfig and cmake)

meson.build:14:0: ERROR: Dependency "glfw" not found, tried pkgconfig and cmake

I'm currently using another packaging of glfw from a non-official repository but it's not ideal for various reasons.

I've attached a minimal repro. Just run the configuration step. Inside meson.build, change the if to switch between working and non-working packages. In the broken case, neither glfw nor glfw3 are found.

Tested on windows and linux.

repro_glfw.zip

eli-schwartz commented 3 years ago

Does it work if you install the dependency before running meson (i.e. like you're supposed to)?

Sahnvour commented 3 years ago

It does not matter, the conan installation part runs fine (ie it produces the expected Finglfw3.cmake), but I guess something in how its cmake is written prevents meson from detecting it ?

eli-schwartz commented 3 years ago

When you say "it doesn't matter", do you mean "I think it's a bug if meson cares when/how you do it", or do you mean "meson still fails when you run conan install before running meson"?

Sahnvour commented 3 years ago

I mean the latter

meson still fails when you run conan install before running meson

As far as I understand, meson uses the FindXYZ.cmake files to setup fake projects and find dependency's paths/settings. From meson's point of view, it does not matter if the conan install ... has run before configuring the build or during it, since in both cases the Findglfw3.cmake is present before the call to dependency('glfw', ...).

Since it works with a different packaging of glfw3, I guess it has something to do with how they are configured on the cmake side.

eli-schwartz commented 3 years ago

What does this Findglfw3.cmake look like? How does it compare to the one installed via the bincrafters project?

Sahnvour commented 3 years ago
Working, bincrafters (target named `glfw`): ```cmake function(conan_message MESSAGE_OUTPUT) if(NOT CONAN_CMAKE_SILENT_OUTPUT) message(${ARGV${0}}) endif() endfunction() macro(conan_find_apple_frameworks FRAMEWORKS_FOUND FRAMEWORKS FRAMEWORKS_DIRS) if(APPLE) foreach(_FRAMEWORK ${FRAMEWORKS}) # https://cmake.org/pipermail/cmake-developers/2017-August/030199.html find_library(CONAN_FRAMEWORK_${_FRAMEWORK}_FOUND NAME ${_FRAMEWORK} PATHS ${FRAMEWORKS_DIRS} CMAKE_FIND_ROOT_PATH_BOTH) if(CONAN_FRAMEWORK_${_FRAMEWORK}_FOUND) list(APPEND ${FRAMEWORKS_FOUND} ${CONAN_FRAMEWORK_${_FRAMEWORK}_FOUND}) else() message(FATAL_ERROR "Framework library ${_FRAMEWORK} not found in paths: ${FRAMEWORKS_DIRS}") endif() endforeach() endif() endmacro() function(conan_package_library_targets libraries package_libdir deps out_libraries out_libraries_target build_type package_name) unset(_CONAN_ACTUAL_TARGETS CACHE) unset(_CONAN_FOUND_SYSTEM_LIBS CACHE) foreach(_LIBRARY_NAME ${libraries}) find_library(CONAN_FOUND_LIBRARY NAME ${_LIBRARY_NAME} PATHS ${package_libdir} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) if(CONAN_FOUND_LIBRARY) conan_message(STATUS "Library ${_LIBRARY_NAME} found ${CONAN_FOUND_LIBRARY}") list(APPEND _out_libraries ${CONAN_FOUND_LIBRARY}) if(NOT ${CMAKE_VERSION} VERSION_LESS "3.0") # Create a micro-target for each lib/a found set(_LIB_NAME CONAN_LIB::${package_name}_${_LIBRARY_NAME}${build_type}) if(NOT TARGET ${_LIB_NAME}) # Create a micro-target for each lib/a found add_library(${_LIB_NAME} UNKNOWN IMPORTED) set_target_properties(${_LIB_NAME} PROPERTIES IMPORTED_LOCATION ${CONAN_FOUND_LIBRARY}) set(_CONAN_ACTUAL_TARGETS ${_CONAN_ACTUAL_TARGETS} ${_LIB_NAME}) else() conan_message(STATUS "Skipping already existing target: ${_LIB_NAME}") endif() list(APPEND _out_libraries_target ${_LIB_NAME}) endif() conan_message(STATUS "Found: ${CONAN_FOUND_LIBRARY}") else() conan_message(STATUS "Library ${_LIBRARY_NAME} not found in package, might be system one") list(APPEND _out_libraries_target ${_LIBRARY_NAME}) list(APPEND _out_libraries ${_LIBRARY_NAME}) set(_CONAN_FOUND_SYSTEM_LIBS "${_CONAN_FOUND_SYSTEM_LIBS};${_LIBRARY_NAME}") endif() unset(CONAN_FOUND_LIBRARY CACHE) endforeach() if(NOT ${CMAKE_VERSION} VERSION_LESS "3.0") # Add all dependencies to all targets string(REPLACE " " ";" deps_list "${deps}") foreach(_CONAN_ACTUAL_TARGET ${_CONAN_ACTUAL_TARGETS}) set_property(TARGET ${_CONAN_ACTUAL_TARGET} PROPERTY INTERFACE_LINK_LIBRARIES "${_CONAN_FOUND_SYSTEM_LIBS};${deps_list}") endforeach() endif() set(${out_libraries} ${_out_libraries} PARENT_SCOPE) set(${out_libraries_target} ${_out_libraries_target} PARENT_SCOPE) endfunction() include(FindPackageHandleStandardArgs) conan_message(STATUS "Conan: Using autogenerated Findglfw.cmake") # Global approach set(glfw_FOUND 1) set(glfw_VERSION "3.3.2") find_package_handle_standard_args(glfw REQUIRED_VARS glfw_VERSION VERSION_VAR glfw_VERSION) mark_as_advanced(glfw_FOUND glfw_VERSION) set(glfw_INCLUDE_DIRS "home/.conan/data/glfw/3.3.2/bincrafters/stable/package/3fb49604f9c2f729b85ba3115852006824e72cab/include") set(glfw_INCLUDE_DIR "home/.conan/data/glfw/3.3.2/bincrafters/stable/package/3fb49604f9c2f729b85ba3115852006824e72cab/include") set(glfw_INCLUDES "home/.conan/data/glfw/3.3.2/bincrafters/stable/package/3fb49604f9c2f729b85ba3115852006824e72cab/include") set(glfw_RES_DIRS ) set(glfw_DEFINITIONS ) set(glfw_LINKER_FLAGS_LIST "$<$,SHARED_LIBRARY>:>" "$<$,MODULE_LIBRARY>:>" "$<$,EXECUTABLE>:>" ) set(glfw_COMPILE_DEFINITIONS ) set(glfw_COMPILE_OPTIONS_LIST "" "") set(glfw_COMPILE_OPTIONS_C "") set(glfw_COMPILE_OPTIONS_CXX "") set(glfw_LIBRARIES_TARGETS "") # Will be filled later, if CMake 3 set(glfw_LIBRARIES "") # Will be filled later set(glfw_LIBS "") # Same as glfw_LIBRARIES set(glfw_SYSTEM_LIBS ) set(glfw_FRAMEWORK_DIRS ) set(glfw_FRAMEWORKS ) set(glfw_FRAMEWORKS_FOUND "") # Will be filled later set(glfw_BUILD_MODULES_PATHS ) conan_find_apple_frameworks(glfw_FRAMEWORKS_FOUND "${glfw_FRAMEWORKS}" "${glfw_FRAMEWORK_DIRS}") mark_as_advanced(glfw_INCLUDE_DIRS glfw_INCLUDE_DIR glfw_INCLUDES glfw_DEFINITIONS glfw_LINKER_FLAGS_LIST glfw_COMPILE_DEFINITIONS glfw_COMPILE_OPTIONS_LIST glfw_LIBRARIES glfw_LIBS glfw_LIBRARIES_TARGETS) # Find the real .lib/.a and add them to glfw_LIBS and glfw_LIBRARY_LIST set(glfw_LIBRARY_LIST glfw3) set(glfw_LIB_DIRS "home/.conan/data/glfw/3.3.2/bincrafters/stable/package/3fb49604f9c2f729b85ba3115852006824e72cab/lib") # Gather all the libraries that should be linked to the targets (do not touch existing variables): set(_glfw_DEPENDENCIES "${glfw_FRAMEWORKS_FOUND} ${glfw_SYSTEM_LIBS} ") conan_package_library_targets("${glfw_LIBRARY_LIST}" # libraries "${glfw_LIB_DIRS}" # package_libdir "${_glfw_DEPENDENCIES}" # deps glfw_LIBRARIES # out_libraries glfw_LIBRARIES_TARGETS # out_libraries_targets "" # build_type "glfw") # package_name set(glfw_LIBS ${glfw_LIBRARIES}) foreach(_FRAMEWORK ${glfw_FRAMEWORKS_FOUND}) list(APPEND glfw_LIBRARIES_TARGETS ${_FRAMEWORK}) list(APPEND glfw_LIBRARIES ${_FRAMEWORK}) endforeach() foreach(_SYSTEM_LIB ${glfw_SYSTEM_LIBS}) list(APPEND glfw_LIBRARIES_TARGETS ${_SYSTEM_LIB}) list(APPEND glfw_LIBRARIES ${_SYSTEM_LIB}) endforeach() # We need to add our requirements too set(glfw_LIBRARIES_TARGETS "${glfw_LIBRARIES_TARGETS};") set(glfw_LIBRARIES "${glfw_LIBRARIES};") set(CMAKE_MODULE_PATH "home/.conan/data/glfw/3.3.2/bincrafters/stable/package/3fb49604f9c2f729b85ba3115852006824e72cab/" ${CMAKE_MODULE_PATH}) set(CMAKE_PREFIX_PATH "home/.conan/data/glfw/3.3.2/bincrafters/stable/package/3fb49604f9c2f729b85ba3115852006824e72cab/" ${CMAKE_PREFIX_PATH}) foreach(_BUILD_MODULE_PATH ${glfw_BUILD_MODULES_PATHS}) include(${_BUILD_MODULE_PATH}) endforeach() if(NOT ${CMAKE_VERSION} VERSION_LESS "3.0") # Target approach if(NOT TARGET glfw::glfw) add_library(glfw::glfw INTERFACE IMPORTED) if(glfw_INCLUDE_DIRS) set_target_properties(glfw::glfw PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${glfw_INCLUDE_DIRS}") endif() set_property(TARGET glfw::glfw PROPERTY INTERFACE_LINK_LIBRARIES "${glfw_LIBRARIES_TARGETS};${glfw_LINKER_FLAGS_LIST}") set_property(TARGET glfw::glfw PROPERTY INTERFACE_COMPILE_DEFINITIONS ${glfw_COMPILE_DEFINITIONS}) set_property(TARGET glfw::glfw PROPERTY INTERFACE_COMPILE_OPTIONS "${glfw_COMPILE_OPTIONS_LIST}") endif() endif() ```
Broken: ```cmake function(conan_message MESSAGE_OUTPUT) if(NOT CONAN_CMAKE_SILENT_OUTPUT) message(${ARGV${0}}) endif() endfunction() macro(conan_find_apple_frameworks FRAMEWORKS_FOUND FRAMEWORKS FRAMEWORKS_DIRS) if(APPLE) foreach(_FRAMEWORK ${FRAMEWORKS}) # https://cmake.org/pipermail/cmake-developers/2017-August/030199.html find_library(CONAN_FRAMEWORK_${_FRAMEWORK}_FOUND NAME ${_FRAMEWORK} PATHS ${FRAMEWORKS_DIRS} CMAKE_FIND_ROOT_PATH_BOTH) if(CONAN_FRAMEWORK_${_FRAMEWORK}_FOUND) list(APPEND ${FRAMEWORKS_FOUND} ${CONAN_FRAMEWORK_${_FRAMEWORK}_FOUND}) else() message(FATAL_ERROR "Framework library ${_FRAMEWORK} not found in paths: ${FRAMEWORKS_DIRS}") endif() endforeach() endif() endmacro() function(conan_package_library_targets libraries package_libdir deps out_libraries out_libraries_target build_type package_name) unset(_CONAN_ACTUAL_TARGETS CACHE) unset(_CONAN_FOUND_SYSTEM_LIBS CACHE) foreach(_LIBRARY_NAME ${libraries}) find_library(CONAN_FOUND_LIBRARY NAME ${_LIBRARY_NAME} PATHS ${package_libdir} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) if(CONAN_FOUND_LIBRARY) conan_message(STATUS "Library ${_LIBRARY_NAME} found ${CONAN_FOUND_LIBRARY}") list(APPEND _out_libraries ${CONAN_FOUND_LIBRARY}) if(NOT ${CMAKE_VERSION} VERSION_LESS "3.0") # Create a micro-target for each lib/a found set(_LIB_NAME CONAN_LIB::${package_name}_${_LIBRARY_NAME}${build_type}) if(NOT TARGET ${_LIB_NAME}) # Create a micro-target for each lib/a found add_library(${_LIB_NAME} UNKNOWN IMPORTED) set_target_properties(${_LIB_NAME} PROPERTIES IMPORTED_LOCATION ${CONAN_FOUND_LIBRARY}) set(_CONAN_ACTUAL_TARGETS ${_CONAN_ACTUAL_TARGETS} ${_LIB_NAME}) else() conan_message(STATUS "Skipping already existing target: ${_LIB_NAME}") endif() list(APPEND _out_libraries_target ${_LIB_NAME}) endif() conan_message(STATUS "Found: ${CONAN_FOUND_LIBRARY}") else() conan_message(STATUS "Library ${_LIBRARY_NAME} not found in package, might be system one") list(APPEND _out_libraries_target ${_LIBRARY_NAME}) list(APPEND _out_libraries ${_LIBRARY_NAME}) set(_CONAN_FOUND_SYSTEM_LIBS "${_CONAN_FOUND_SYSTEM_LIBS};${_LIBRARY_NAME}") endif() unset(CONAN_FOUND_LIBRARY CACHE) endforeach() if(NOT ${CMAKE_VERSION} VERSION_LESS "3.0") # Add all dependencies to all targets string(REPLACE " " ";" deps_list "${deps}") foreach(_CONAN_ACTUAL_TARGET ${_CONAN_ACTUAL_TARGETS}) set_property(TARGET ${_CONAN_ACTUAL_TARGET} PROPERTY INTERFACE_LINK_LIBRARIES "${_CONAN_FOUND_SYSTEM_LIBS};${deps_list}") endforeach() endif() set(${out_libraries} ${_out_libraries} PARENT_SCOPE) set(${out_libraries_target} ${_out_libraries_target} PARENT_SCOPE) endfunction() include(FindPackageHandleStandardArgs) conan_message(STATUS "Conan: Using autogenerated Findglfw3.cmake") # Global approach set(glfw3_FOUND 1) set(glfw3_VERSION "3.3.2") find_package_handle_standard_args(glfw3 REQUIRED_VARS glfw3_VERSION VERSION_VAR glfw3_VERSION) mark_as_advanced(glfw3_FOUND glfw3_VERSION) set(glfw_INCLUDE_DIRS "home/.conan/data/glfw/3.3.2/_/_/package/d3cffeefc8c8bcb6be8abdd182cb1b56fc81bacc/include") set(glfw_INCLUDE_DIR "home/.conan/data/glfw/3.3.2/_/_/package/d3cffeefc8c8bcb6be8abdd182cb1b56fc81bacc/include") set(glfw_INCLUDES "home/.conan/data/glfw/3.3.2/_/_/package/d3cffeefc8c8bcb6be8abdd182cb1b56fc81bacc/include") set(glfw_RES_DIRS ) set(glfw_DEFINITIONS ) set(glfw_LINKER_FLAGS_LIST "$<$,SHARED_LIBRARY>:>" "$<$,MODULE_LIBRARY>:>" "$<$,EXECUTABLE>:>" ) set(glfw_COMPILE_DEFINITIONS ) set(glfw_COMPILE_OPTIONS_LIST "" "") set(glfw_COMPILE_OPTIONS_C "") set(glfw_COMPILE_OPTIONS_CXX "") set(glfw_LIBRARIES_TARGETS "") # Will be filled later, if CMake 3 set(glfw_LIBRARIES "") # Will be filled later set(glfw_LIBS "") # Same as glfw_LIBRARIES set(glfw_SYSTEM_LIBS gdi32) set(glfw_FRAMEWORK_DIRS ) set(glfw_FRAMEWORKS ) set(glfw_FRAMEWORKS_FOUND "") # Will be filled later set(glfw_BUILD_MODULES_PATHS "home/.conan/data/glfw/3.3.2/_/_/package/d3cffeefc8c8bcb6be8abdd182cb1b56fc81bacc/lib/cmake/conan-official-glfw-targets.cmake") conan_find_apple_frameworks(glfw_FRAMEWORKS_FOUND "${glfw_FRAMEWORKS}" "${glfw_FRAMEWORK_DIRS}") mark_as_advanced(glfw_INCLUDE_DIRS glfw_INCLUDE_DIR glfw_INCLUDES glfw_DEFINITIONS glfw_LINKER_FLAGS_LIST glfw_COMPILE_DEFINITIONS glfw_COMPILE_OPTIONS_LIST glfw_LIBRARIES glfw_LIBS glfw_LIBRARIES_TARGETS) # Find the real .lib/.a and add them to glfw_LIBS and glfw_LIBRARY_LIST set(glfw_LIBRARY_LIST glfw3) set(glfw_LIB_DIRS "home/.conan/data/glfw/3.3.2/_/_/package/d3cffeefc8c8bcb6be8abdd182cb1b56fc81bacc/lib") # Gather all the libraries that should be linked to the targets (do not touch existing variables): set(_glfw_DEPENDENCIES "${glfw_FRAMEWORKS_FOUND} ${glfw_SYSTEM_LIBS} opengl::opengl") conan_package_library_targets("${glfw_LIBRARY_LIST}" # libraries "${glfw_LIB_DIRS}" # package_libdir "${_glfw_DEPENDENCIES}" # deps glfw_LIBRARIES # out_libraries glfw_LIBRARIES_TARGETS # out_libraries_targets "" # build_type "glfw") # package_name set(glfw_LIBS ${glfw_LIBRARIES}) foreach(_FRAMEWORK ${glfw_FRAMEWORKS_FOUND}) list(APPEND glfw_LIBRARIES_TARGETS ${_FRAMEWORK}) list(APPEND glfw_LIBRARIES ${_FRAMEWORK}) endforeach() foreach(_SYSTEM_LIB ${glfw_SYSTEM_LIBS}) list(APPEND glfw_LIBRARIES_TARGETS ${_SYSTEM_LIB}) list(APPEND glfw_LIBRARIES ${_SYSTEM_LIB}) endforeach() # We need to add our requirements too set(glfw_LIBRARIES_TARGETS "${glfw_LIBRARIES_TARGETS};opengl::opengl") set(glfw_LIBRARIES "${glfw_LIBRARIES};opengl::opengl") set(CMAKE_MODULE_PATH "home/.conan/data/glfw/3.3.2/_/_/package/d3cffeefc8c8bcb6be8abdd182cb1b56fc81bacc/lib/cmake" ${CMAKE_MODULE_PATH}) set(CMAKE_PREFIX_PATH "home/.conan/data/glfw/3.3.2/_/_/package/d3cffeefc8c8bcb6be8abdd182cb1b56fc81bacc/lib/cmake" ${CMAKE_PREFIX_PATH}) foreach(_BUILD_MODULE_PATH ${glfw_BUILD_MODULES_PATHS}) include(${_BUILD_MODULE_PATH}) endforeach() if(NOT ${CMAKE_VERSION} VERSION_LESS "3.0") # Target approach if(NOT TARGET glfw::glfw) add_library(glfw::glfw INTERFACE IMPORTED) if(glfw_INCLUDE_DIRS) set_target_properties(glfw::glfw PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${glfw_INCLUDE_DIRS}") endif() set_property(TARGET glfw::glfw PROPERTY INTERFACE_LINK_LIBRARIES "${glfw_LIBRARIES_TARGETS};${glfw_LINKER_FLAGS_LIST}") set_property(TARGET glfw::glfw PROPERTY INTERFACE_COMPILE_DEFINITIONS ${glfw_COMPILE_DEFINITIONS}) set_property(TARGET glfw::glfw PROPERTY INTERFACE_COMPILE_OPTIONS "${glfw_COMPILE_OPTIONS_LIST}") # Library dependencies include(CMakeFindDependencyMacro) if(NOT opengl_FOUND) find_dependency(opengl REQUIRED) else() message(STATUS "Dependency opengl already found") endif() endif() endif() ```
eli-schwartz commented 3 years ago

The only real difference seems to be, the broken dependency('glfw3') requires opengl, the detected/working dependency('glfw') does not...

Does meson-logs/meson-log.txt have any interesting information about the lookup attempt?

Sahnvour commented 3 years ago

Unfortunately it doesn't (to me at least).

Conan installs glfw3 and opengl (it's kind of a fake dependency) just fine:

broken.txt: Installing package
Requirements
    glfw/3.3.2 from 'conan-center' - Cache
    opengl/system from 'conan-center' - Cache
Packages
    glfw/3.3.2:d3cffeefc8c8bcb6be8abdd182cb1b56fc81bacc - Cache
    opengl/system:5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 - Cache

Installing (downloading, building) binaries...
opengl/system: Already installed!
glfw/3.3.2: Already installed!
broken.txt: Generator txt created conanbuildinfo.txt
broken.txt: Generator cmake_find_package created Findglfw3.cmake
broken.txt: Generator cmake_find_package created Findopengl.cmake
broken.txt: Generated conaninfo.txt
broken.txt: Generated graphinfo

and then from stderr:

--- stderr ---

Pkg-config binary for MachineChoice.HOST is not cached.
None of 'PKG_CONFIG' are defined in the environment, not changing global flags.
Pkg-config binary missing from cross or native file, or env var undefined.
Trying a default Pkg-config fallback at pkg-config
Found pkg-config: home\scoop\shims\pkg-config.EXE (0.26)
Determining dependency 'glfw' with pkg-config executable 'home\\scoop\\shims\\pkg-config.EXE'
PKG_CONFIG_PATH: C:\Program Files\Git\usr\lib\pkgconfig;C:\Program Files\Git\usr\share\pkgconfig;C:\Program Files\Git\lib\pkgconfig
Called `home\scoop\shims\pkg-config.EXE --modversion glfw` -> 1

CMake binary for MachineChoice.HOST is not cached
None of 'CMAKE' are defined in the environment, not changing global flags.
CMake binary missing from cross or native file, or env var undefined.
Trying a default CMake fallback at cmake
Found CMake: home\scoop\shims\cmake.EXE (3.18.4)
None of 'CMAKE_PREFIX_PATH' are defined in the environment, not changing global flags.
Extracting basic cmake information
Try CMake generator: auto
Calling CMake (['home\\scoop\\shims\\cmake.EXE']) in repro_glfw\build\meson-private\cmake_glfw with:
  - "--trace-expand"
  - "--trace-format=json-v1"
  - "--no-warn-unused-cli"
  - "--trace-redirect=cmake_trace.txt"
  - "-DCMAKE_TOOLCHAIN_FILE=repro_glfw/build/meson-private/cmake_glfw/CMakeMesonToolchainFile.cmake"
  - "."
  -- Module search paths:    ['/Program Files', '/Program Files (x86)', 'home/scoop/apps/cmake/3.18.4']
  -- CMake root:             home/scoop/apps/cmake/3.18.4/share/cmake-3.18
  -- CMake architectures:    []
  -- CMake lib search paths: ['lib', 'lib32', 'lib64', 'libx32', 'share']
Preliminary CMake check failed. Aborting.
Run-time dependency glfw found: NO (tried pkgconfig and cmake)

meson.build:14:0: ERROR: Dependency "glfw" not found, tried pkgconfig and cmake
mensinda commented 3 years ago

OK, looks like the Preliminary CMake check failed. Aborting. message is the main issue here.

Could you please try cloning Meson and commenting out this line (or the entire branch) to check if this "fixes" the issue?

Sahnvour commented 3 years ago

Tried removing the early return or even the whole branch, it goes a bit further and does a second call to cmake but still ultimately fails.

CMake binary for MachineChoice.HOST is not cached
CMake binary missing from cross or native file, or env var undefined.
Trying a default CMake fallback at cmake
Found CMake: home\scoop\shims\cmake.EXE (3.20.1)
Extracting basic cmake information
Try CMake generator: auto
Calling CMake (['home\\scoop\\shims\\cmake.EXE']) in repro_glfw\build\meson-private\cmake_glfw with:
  - "--trace-expand"
  - "--trace-format=json-v1"
  - "--no-warn-unused-cli"
  - "--trace-redirect=cmake_trace.txt"
  - "-DCMAKE_TOOLCHAIN_FILE=repro_glfw/build/meson-private/cmake_glfw/CMakeMesonToolchainFile.cmake"
  - "."
  -- Module search paths:    ['C:/Program Files', 'C:/Program Files (x86)', 'home/scoop/apps/cmake/3.20.1']
  -- CMake root:             home/scoop/apps/cmake/3.20.1/share/cmake-3.20
  -- CMake architectures:    []
  -- CMake lib search paths: ['lib', 'lib32', 'lib64', 'libx32', 'share']

Determining dependency 'glfw' with CMake executable 'home\\scoop\\shims\\cmake.EXE'
Try CMake generator: auto
Calling CMake (['home\\scoop\\shims\\cmake.EXE']) in repro_glfw\build\meson-private\cmake_glfw with:
  - "-DNAME=glfw"
  - "-DARCHS="
  - "-DVERSION="
  - "-DCOMPS="
  - "-DCMAKE_MODULE_PATH=repro_glfw\build"
  - "--trace-expand"
  - "--trace-format=json-v1"
  - "--no-warn-unused-cli"
  - "--trace-redirect=cmake_trace.txt"
  - "-DCMAKE_TOOLCHAIN_FILE=repro_glfw/build/meson-private/cmake_glfw/CMakeMesonToolchainFile.cmake"
  - "."
Run-time dependency glfw found: NO (tried pkgconfig and cmake)

meson.build:14:0: ERROR: Dependency "glfw" not found, tried pkgconfig and cmake
mensinda commented 3 years ago

OK, the "-DCMAKE_MODULE_PATH=repro_glfw\build" part looks suspect (as in the \ is completely broken).

Where does repro_glfw\build come from? Is it set manually or by conan?

Sahnvour commented 3 years ago

This is the path I'm instructing conan to install packages into, in this case the build dir ('--install-folder', meson.current_build_dir()).

The backslash probably comes from the fact that I'm on windows (but doing my cli stuff under git bash). However replacing it with forward slashes does not help.

mensinda commented 3 years ago

I managed to get it to work with your meson.build (on Linux) with by adding modules: ['glfw::glfw'] to the dependency call. Are you sure you have a Findglfw3.cmake in your build dir?