cmake: Как просто запустить скрипт, который выполняет некоторые проверки? - PullRequest
0 голосов
/ 07 августа 2020

У нас есть несколько npm сборок, которые запускаются в пакете cmake. Это не работает, и создаваемые сообщения об ошибках совершенно неразборчивы.

Чтобы смягчить это, я пытаюсь добавить уровень обработки, чтобы создать полезное сообщение для разработчиков, чтобы они могли понять, что они должны это сделать (в данном случае обновить некоторый контент внутри самого CMakeLists.txt).

Вот насколько я понял. Я создал свой скрипт «scripts / check-files. sh», и я определенно могу успешно запустить его выполнение через

add_custom_target(check_files ALL
  COMMAND ${CMAKE_COMMAND} -E echo "check_files: Checking if your files are properly listed for the file lists in CMakeLists.txt:"
  COMMAND "${CMAKE_CURRENT_LIST_DIR}/scripts/check-files.sh")

Это дает

make[2]: *** [CMakeFiles/check_files] Error 1
make[1]: *** [CMakeFiles/check_files.dir/all] Error 2

когда check-files.sh терпит неудачу и дает ненулевой код возврата, и этого не происходит при успешном выполнении. Поскольку я могу контролировать поведение cmake, изменяя поведение check-files.sh, я знаю, что он правильно его выполняет. Почему я должен об этом говорить? Что ж ...

Проблема: Я не могу заставить cmake показать мне вывод check_files: Checking if your files are properly listed for the file lists in CMakeLists.txt: или вывод контрольных файлов. sh исполнение. Обратите внимание, что я не использую КОММЕНТАРИЙ. По-видимому, на это никогда нельзя даже рассчитывать. Но ... COMMAND ${CMAKE_COMMAND} -E echo, похоже, тоже ничего не делает.

Так как у меня так много проблем даже с выводом отображения моего вспомогательного сценария проверки, я могу придумать одну вещь, которая отображает, а именно имя:

add_custom_target("check_files_PLEASE_CHECK_YOUR_FILE_LIST_IN_CMakeLists.txt" ALL

уступая

make[2]: *** [CMakeFiles/check_files_PLEASE_CHECK_YOUR_FILE_LIST_IN_CMakeLists.txt] Error 1
make[1]: *** [CMakeFiles/check_files_PLEASE_CHECK_YOUR_FILE_LIST_IN_CMakeLists.txt.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make: *** [all] Error 2

Это очень далеко от идеала, но достаточно визуальной подписи, чтобы кого-то понять, возможно, придется.

1 Ответ

0 голосов
/ 07 августа 2020

Попробуйте использовать COMMAND /bin/sh yourscript.sh или даже лучше - сначала найдите подходящий интерпретатор с помощью find_program, а затем используйте результат для запуска скрипта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...