mesonbuild/meson

Meson does not respect `target_include_directories(PRIVATE)` in CMake subprojects

Open

#13 818 ouverte le 23 oct. 2024

Voir sur GitHub
 (0 commentaires) (0 réactions) (0 assignés)Python (1 465 forks)batch import
buggood first issuemodule:cmake

Métriques du dépôt

Stars
 (4 978 stars)
Métriques de merge PR
 (Merge moyen 30j 19h) (63 PRs mergées en 30 j)

Description

Describe the bug target_include_directories(libfoo PRIVATE) implies that these private headers will not be propagated to the user of the libfoo.

To Reproduce https://github.com/artem/meson-bug-demo/tree/cmake-module branch cmake-module

Expected behavior test.c does not see private-include/private.h

Autogenerated meson.build by the cmake module:

project('meow', 'c')
libmeow_dir = include_directories('private-include', 'public-include', '__CMake_build', '.')
libmeow_sys = include_directories(is_system : true)
libmeow_inc = [libmeow_dir, libmeow_sys]
libmeow_src = files('meow.c')
libmeow = static_library(
  'libmeow',
  libmeow_src,
  build_by_default : false,
  link_args : [],
  link_with : [],
  include_directories : libmeow_inc,
  install : false,
  override_options : [],
  objects : [],
  c_args : [],
  pic : false
)
libmeow_dep = declare_dependency(
  link_args : [],
  link_with : libmeow,
  compile_args : [],
  include_directories : libmeow_inc
)

system parameters

  • meson 1.3.2
  • ninja 1.11.1

P.S. Relevant meson code from master branch: https://github.com/mesonbuild/meson/blob/7813354/mesonbuild/cmake/interpreter.py#L1171-L1175

Guide contributeur