В meson можете ли вы проверить наличие каталога в вашем проекте?

Можно ли проверить наличие каталога в моем проекте с помощью мезонной сборки?

Например, я обычно помещаю приемочные тесты рядом с моими модульными тестами в такой структуре папок:

library/
        header.hp
        src/
            lib.cpp
        tests/
              acceptance_test/
              unit_test/ 

У меня не всегда есть приемочные тесты, и я бы не хотел, чтобы там был файл meson.build, если в нем нет необходимости. Я бы предпочел условное subdir('acceptance_test'), если каталог acceptance_test/ существует.


person paxos1977    schedule 05.01.2016    source источник


Ответы (1)


Просматривая справочное руководство, я не вижу прямой поддержки этого.

Вы можете использовать run_command, делая что-то вроде

if run_command('[', '-d', dirname, ']').returncode() == 0
    message('directory exists')
endif

но, конечно, у этого есть недостаток, заключающийся в том, что он не работает на разных платформах.

person Ryan Burn    schedule 07.01.2016
comment
Я не думал, что run_command будет работать, потому что команды на самом деле не выполняются при генерации конфигурации, они выполняются ниндзя постфактум. - person paxos1977; 08.01.2016
comment
Я только что попробовал. Он печатает «каталог существует», когда вы запускаете команду meson, и у меня не было проблем с запуском subdir в условии if. - person Ryan Burn; 08.01.2016
comment
@mickb Мой комментарий основан на том, что сказано в примерах вики и модульных тестов. Я ценю, что вы нашли время попробовать его. - person paxos1977; 09.01.2016
comment
@mickb, я полагаю, что мог бы вызвать скрипт python в run_command, а поскольку meson - это python3, это уже зависимость. - person paxos1977; 09.01.2016