#meson-build
Вопрос:
Я хотел бы распечатать имя файла из buildtarget
созданного executable()
. Заглядывая внутрь class Executable
, я пытался ping.name
:
ping = executable('ping', [
'ping.c',
'ping_common.c',
'ping6_common.c',
'node_info.c',
git_version_h
],
include_directories : inc,
dependencies : [
cap_dep,
idn_dep,
intl_dep,
m_dep,
resolv_dep
],
link_with : [libcommon],
install: true)
message(ping.name))
Но это дает ошибку:
ping/meson.build:23:17: ERROR: Expecting lparen got rparen.
То же самое для ping.filename
, нет to_string()
. Являются ли они «частными» или как-то скрытыми?
BuildTarget
задокументирован, но метод не описан. Таким образом, в целом, как понять, какие методы являются общедоступными, а какие частными для определенного класса мезонов?
Ответ №1:
Лучшая ссылка для ссылки-это эта, так как в ней показаны все поддерживаемые методы. И в вашем случае это также должно сработать full_path()
.:
message(ping.full_path())
Если вам нужно только имя целевого файла , а его нет name()
, то некоторые манипуляции со строками/массивами должны сработать:
message(ping.full_path().split('/')[-1])
таким образом, он должен разделить полный путь на массив строк и вывести последний элемент массива.
Ответ №2:
name
на самом деле это метод, который вы упустили (
message(ping.name())
Комментарии:
1. Я тестировал разные вещи, в том числе
ping.filename()
, но неping.name()
. В конце концов, я собираюсь использовать простую строку, потому.name()
что это от0.54.0
, и мне также нужна поддержка более старых дистрибутивов.2. Теперь я вижу, что действительно не хватает одного символа, поэтому он не тестировался как функция. Я также протестировал его как атрибуты
message(ping.name)
.3. DSL Мезона не имеет никаких атрибутов, к вашему сведению, это всегда методы.