为何CMake判定GLEW::glew是目标,却提示该导入目标不由当前项目构建?
CMake:目标存在确认通过但
target_include_directories报错的原因 你的问题核心是参数格式错误,导致CMake在target_include_directories中识别到了一个不存在的目标名。
看你的代码行:
target_include_directories(GLEW::glew, INTERFACE, GLEW_INCLUDE_DIRS)
这里的问题是参数之间多了逗号——CMake的命令参数是空格分隔,不需要逗号。你把目标名写成了GLEW::glew,(末尾带逗号),这个目标当然不存在,所以报错说找不到"GLEW::glew,"(注意错误信息里的引号包含了逗号)。
而你后面的if (TARGET GLEW::glew)检查的是正确的目标名,不带逗号,所以能成功识别到已创建的导入目标,输出"GLEW is a target"。
修正后的正确命令行应该是:
target_include_directories(GLEW::glew INTERFACE ${GLEW_INCLUDE_DIRS})
另外正如你所说,FindGLEW.cmake在创建导入目标时已经自动设置好包含目录,这个target_include_directories调用确实是多余的,完全可以删掉。
内容的提问来源于stack exchange,提问作者erbrts
相关产品推荐
相关产品推荐

