如何中止处理当前目录的CmakeList

如何中止处理当前目录的CmakeList,cmake,Cmake,我的项目结构如下: 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 "

我的项目结构如下:

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)
但这并不像我想的那样工作,因为这仍然阻止生成生成文件。我能想到的唯一方法是将CMakeLists文件的整个主体放入条件的主体中

是否有一种方式可以说“跳过处理此CMakeLists的其余部分”?

来自CMake

  • return:从目录或函数返回

    return()

从目录或函数返回。 当遇到此命令时,它将 当前函数的进程 或要停止并控制的目录是 返回函数的调用者, 或父目录(如果有)。注 宏不是函数,而 不像函数那样处理返回 是的