Как я узнаю, что find_package () успешно работает в cmake? - PullRequest
1 голос
/ 26 апреля 2010
find_package(GTK)

Как я могу заставить его выводить что-то, чтобы я мог узнать, находит ли он что-то или нет?

Платформа: Windows XP

1 Ответ

11 голосов
/ 26 апреля 2010

Вы можете использовать команду message как в:

FIND_PACKAGE(GTK)
IF (${GTK_FOUND})
   MESSAGE(STATUS "Found GTK.")
ELSE (${GTK_FOUND})
   MESSAGE(STATUS "Could not locate GTK.")
ENDIF (${GTK_FOUND})

Или, если вы хотите прервать его, если GTK не найден:

FIND_PACKAGE(GTK)
IF (${GTK_FOUND})
   MESSAGE(STATUS "Found GTK.")
ELSE (${GTK_FOUND})
   MESSAGE(FATAL_ERROR "Could not locate GTK.")
ENDIF (${GTK_FOUND})

Обратите внимание, что если вы сделаете последнее, то вы можете просто использовать флаг "REQUIRED" с FIND_PACKAGE, так как указание флага "REQUIRED" гарантирует, что он потерпит неудачу с ошибкой, если он не найден:

FIND_PACKAGE(GTK REQUIRED)

Приведенная выше команда приведет к прерыванию CMake и выведет сообщение об ошибке, если GTK не найден. Вас также может заинтересовать документация для FIND_PACKAGE из Руководства по CMake . Также следует отметить, что FIND_PACKAGE (XYZ) фактически вызывает модуль CMake FindXYZ, и поэтому каждый пакет с соответствующим FIND_PACKAGE имеет свой собственный модуль CMake, реализующий операцию поиска ..., поскольку CMake все еще несколько нов, некоторые из этих модулей поиска не правильно реализовано ... исходя из ваших комментариев ниже, может показаться, что FindGTK не был реализован правильно (поскольку, если он отсутствует, использование флага REQUIRED должно привести к его прерыванию с фатальной ошибкой, но это не так. похоже в твоем случае).

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