Как определить, будет ли работать include (SomeModule)? - PullRequest
0 голосов
/ 30 июня 2018

Я использую библиотеку, которая может экспортировать или не экспортировать SomeModule.cmake . Если он существует, я хочу использовать его для улучшения своих возможностей, но в противном случае я хочу использовать простой обходной путь.

Однако, если include(SomeModule) терпит неудачу, CMake немедленно завершается с сообщением:

CMake Error at CMakeLists.txt:42 (include):
  include could not find load file:

    SomeModule

Как определить, будет ли include(SomeModule) работать без вмешательства вручную?


Я представляю что-то вроде этого:

# this function doesn't exist:
detect_include_exists(SomeModule)

if(SomeModule_FILE_EXISTS)
  include(SomeModule)

  # call the functions inside of SomeModule
else()
  # workaround code
endif()

1 Ответ

0 голосов
/ 30 июня 2018

Команда include support OPTIONAL аргумент для игнорирования отсутствующих файлов. Используя его вместе с RESULT_VARIABLE, вы можете проверить, действительно ли include() включил файл:

include(SomeModule OPTIONAL RESULT_VARIABLE SomeModule_Found)
if(NOT SomeModule_Found)
     # Include file is absent. Need some workaround.
endif()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...