Условное предложение add_custom_command - PullRequest
0 голосов
/ 28 июня 2019

Я хочу использовать в своих пользовательских командах « задания» Ninja ;наконец-то что-то напрямую поддерживается в cmake 3.15.0.Многие / большинство людей не будут иметь эту версию, поэтому я хотел бы просто ДОБАВИТЬ эту поддержку, не требуя, чтобы кто-либо обновил их версию cmake.

Более общий вопрос ...

«Какой лучший способ указать условное предложение пользовательской команды…?»

add_custom_command(
  OUTPUT  foo
  COMMAND  ${CMAKE_COMMAND} -E touch foo
  if("${CMAKE_VERSION}" STRGREATER_EQUAL "3.15.0")  # <-- syntax error
    JOB_POOL  my_job_pool                           # <-- syntax error
  endif()                                           # <-- syntax error
  VERBATIM
  )

Может быть ...?

if("${CMAKE_VERSION}" STRGREATER_EQUAL "3.15.0")
  set(USE_JOB_POOL  JOB_POOL my_job_pool)
endif()
add_custom_command(
  OUTPUT  foo
  COMMAND  ${CMAKE_COMMAND} -E touch foo
  ${USE_JOB_POOL}
  VERBATIM
  )

Или ...?

add_custom_command(
  OUTPUT  foo
  COMMAND  ${CMAKE_COMMAND} -E touch foo
  $<IF:$<VERSION_GREATER_EQUAL:${CMAKE_VERSION},3.15.0>:JOB_POOL my_job_pool>
  VERBATIM
  )

1 Ответ

0 голосов
/ 02 июля 2019

По словам Цыварева, мой подход разумен. В моем коде, который «работает», я реализовал нечто похожее на это:

set(USE_JOB_POOL 0)
if("${CMAKE_GENERATOR}" STREQUAL "Ninja" AND
   "${CMAKE_VERSION}" STRGREATER_EQUAL "3.15.0")
    set(USE_JOB_POOL  JOB_POOL my_job_pool)
endif()
...
add_custom_command(
  OUTPUT  foo
  COMMAND  ${CMAKE_COMMAND} -E touch foo
  $<${JOB_POOL}:${JOB_POOL}>
  VERBATIM
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...