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

Vit*_*ali 11 cmake

我有一个项目结构,如:

src/CMakeLists.txt
src/test/component1/CMakeLists.txt
src/test/component2/CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)

对于测试,我正在使用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)
Run Code Online (Sandbox Code Playgroud)

但这并不像我想的那样,因为它仍然会阻止Makefile的生成.我能想到的唯一方法是将CMakeLists文件的整个主体放入条件的主体中.

有没有办法说"跳过处理这个C​​MakeLists的剩余部分"?

pki*_*kit 8

来自CMake 文档

  • return:从目录或函数返回.

    return()

从目录或函数返回.遇到此命令时,它会导致当前函数或目录的进程停止,并且控制权返回给函数的调用者,或者返回父目录(如果有).请注意,宏不是函数,并且不像函数那样处理返回.