测试是否找到所需的包

Test if required package found

假设我需要一个包裹 PX

find_package(PX REQUIRED)
if(PX_FOUND)
    target_link_libraries(foo PX::lib)
endif()

既然我将包裹标记为REQUIRED,是否有必要进行测试?有没有什么情况我不能 link PX ?

Since I marked the package as REQUIRED, is the test necessary?

不,没有必要。如果搜索路径上没有兼容的模块或配置文件设置 <PkgName>_FOUND,那么 find_package(PkgName REQUIRED) 将立即终止配置步骤。这是一个致命错误。检查变量是没有意义的。你可以安全地写:

find_package(PX REQUIRED)
target_link_libraries(foo PRIVATE PX::lib)

使用 target_link_libraries 时不要忘记设置可见性说明符。