【发布时间】:2021-07-26 05:35:39
【问题描述】:
我的 glfw3 是从源代码构建的,并且使用 FindGLFW.cmake 来查找库:
find_path(
GLFW_INCLUDE_DIR
NAMES
GLFW
PATHS
include)
find_library(
GLFW_LIBRARY
NAMES
glfw glfw3 glfw3dll
PATHS
lib)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(GLFW REQUIRED_VARS GLFW_LIBRARY GLFW_INCLUDE_DIR)
我可以在其他项目中使用find_package(GLFW REQUIRED) 和target_link_libraries(xxx glfw3) 而不会出现构建错误。但是,if(TARGET glfw) 或 if(TARGET glfw3) 中的语句总是给我错误的结果。可能是什么原因?
例子:
find_package(GLFW REQUIRED)
MESSAGE(STATUS "GLFW: ${GLFW_FOUND}")
if(TARGET glfw)
MESSAGE(STATUS "Found it")
else()
MESSAGE(STATUS "Not Found")
endif()
target_link_libraries(xxx glfw3)
这给了我GLFW: TRUE 和Not Found 的输出,但没有构建错误。
【问题讨论】:
-
您正在使用,而不是构建 glfw。即它不是你的“目标”。
xxx是你的目标。 -
@wcochran 对,我正在构建使用 glfw 的
xxx。也许我在原始问题中不清楚。我试图通过首先find_package(GLFW),然后if(TARGET glfw)输出一些东西,最后target_link_libraries(xxx glfw3)来查看cmake 是否可以找到glfw -
但是……为什么?你读过docs吗?喜欢第一行:
<PackageName>_FOUND will be set to indicate whether the package was found -
@KamilCuk 和
${GLFW_FOUND}是真的
标签: c++ cmake glfw cmakelists-options