как избежать символа закрывающей угловой скобки в выражениях генератора cmake? - PullRequest
0 голосов
/ 13 сентября 2018

Вот что я пытаюсь сделать:

set(BE_QUIET $<$<NOT:$<BOOL:CMAKE_VERBOSE_MAKEFILE>>:&>/dev/null>)

с целью использования в add_cusom_command, например:

add_custom_command(
    ...
    COMMAND ... ${BE_QUIET}
)

Идея в том, чтобы подавить вывод пользовательских команд, если пользователь не установит CMAKE_VERBOSE_MAKEFILE (или не запустит make VERBOSE=1).

Проблема в том, что cmake рассматривает этот символ закрывающей угловой скобки как конец выражения. Есть ли способ избежать этого?

Редактировать: увы, хотя я знаю о $<ANGLE-R> сейчас, эта идея не работает - вам нужно новое выражение (что-то вроде $<CONFIG_FLAGS:VERBOSE>)

Редактировать 2: нашел решение (ввести немного make магии):

 set(BE_QUIET "$(if" "$(VERBOSE),,&>/dev/null)")

1 Ответ

0 голосов
/ 13 сентября 2018

Использование $<ANGLE-R> (документация находится в разделе Выходные выражения ):

set(BE_QUIET $<$<BOOL:CMAKE_VERBOSE_MAKEFILE>:&$<ANGLE-R>/dev/null>)

Обратите внимание, что обнаружить make VERBOSE=1 невозможно, так как отсутствует выражение генератораэто говорит нам, был ли VERBOSE=1 пройден.

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