Как прервать обработку CMakeLists для текущего каталога

У меня есть структура проекта вроде:

src/CMakeLists.txt
src/test/component1/CMakeLists.txt
src/test/component2/CMakeLists.txt

Для тестирования я использую Qt - однако, я хочу убедиться, что если Qt (или какой-либо другой тестовый пакет не найден), я просто пропускаю пакет.

Я пробовал

find_package(Qt4 QUIET COMPONENTS QtCore QtTestLib)
if (NOT QT4_FOUND)
    message(SEND_ERROR "Qt4 not found - skipping building tests")
endif (NOT QT4_FOUND)

но это не работает, как я хочу, поскольку это все еще препятствует генерации Make файлов. Единственный способ, я могу думать, - поместить все тело файла CMakeLists в тело условного.

Есть ли способ сказать "пропустить обработку оставшейся части этого CMakeLists"?

Ответ 1

В документации CMake

  • return: Возврат из каталога или функции.

    return()

Возвращает из каталога или функции. Когда эта команда встречается, это вызванный процесс текущей функции или каталог для остановки и управления вернуться к вызывающей функции, или родительский каталог, если он есть. Заметка что макрос не является функцией и не обрабатывает возврат как функцию делает.