cmake -> ninja: выберите «первую» цель и «последний» целевой запуск - PullRequest
0 голосов
/ 13 февраля 2020

Мы используем среднюю систему сборки cmake. Обычно пользователи используют «ниндзя», хотя поддерживается «make».

Независимо от того, какую команду «ниндзя» выполняет пользователь (кроме «чистой»), я хочу, чтобы ПЕРВАЯ вещь, которую выполняет ниндзя, выполнялась custom_command (). Когда «ниндзя» заканчивается, я хочу, чтобы ПОСЛЕДНЯЯ вещь, которую ниндзя делал (даже если была ошибка), состояла в запуске другого custom_command ().

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

Поскольку я хочу, чтобы он запускал цель LAST, даже когда ниндзя обнаружил ошибку, не очевидно, как это сделать в cmake. в любом месте.

Самый очевидный способ - это создать файл сценария, назовем его «Ninja», который будет делать:

#!/bin/bash

ninja run-first-target  # <-- Run my first target
ninja $*;               # <-- Run what the user wants (pass, fail, whatever)
ninja run-last-target   # <-- Run my last target

Тогда я должен заставить всех использовать «Ninja» вместо "ниндзя". (Я бы создал аналогичную вещь для пользователей "make".)

Какой здесь лучший подход? Ниндзя (или cmake) предлагает какие-либо обратные вызовы?

...