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