我有以下CMake脚本,有效:
find_path(
GLES_SDK_INCLUDE_DIR
NAMES "GLES2/gl2.h"
PATHS "${CMAKE_FRAMEWORK_PATH}/include")
但是这个返回-NOTFOUND
:
find_path(
GLES_SDK_INCLUDE_DIR
NAMES "gl2.h"
PATHS "${CMAKE_FRAMEWORK_PATH}/include/GLES2")
为什么呢?有什么想法吗?
答案 0 :(得分:2)
将我的评论转化为答案
在你的第一种情况下,CMake确实在默认路径中找到了标题。
CMAKE_FRAMEWORK_PATH
作为额外的搜索路径似乎是一个奇怪的选择,因为该变量包含一个“目录列表,指定了find_library(),find_package(),find_path()使用的OS X框架的搜索路径,以及find_file()命令。“
我已经尝试了我的Ubuntu发行版的示例,我可以通过流畅的测试重现您的问题:
<强>的CMakeLists.txt 强>
cmake_minimum_required(VERSION 2.6)
project(FindGL2)
unset(GLES_SDK_INCLUDE_DIR CACHE)
find_path(
GLES_SDK_INCLUDE_DIR
NAMES "GLES2/gl2.h"
PATHS "${CMAKE_FRAMEWORK_PATH}/include"
)
message(STATUS "GLES2/gl2.h => ${GLES_SDK_INCLUDE_DIR}")
unset(GLES_SDK_INCLUDE_DIR CACHE)
find_path(
GLES_SDK_INCLUDE_DIR
NAMES "gl2.h"
PATHS "${CMAKE_FRAMEWORK_PATH}/include/GLES2"
)
message(STATUS "gl2.h => ${GLES_SDK_INCLUDE_DIR}")
给出
-- GLES2/gl2.h => /usr/include
-- gl2.h => GLES_SDK_INCLUDE_DIR-NOTFOUND
<强>解决方案强>
使用PATH_SUFFIXES "include/GLES2"
或仅使用PATH_SUFFIXES "GLES2"
代替:
find_path(
GLES_SDK_INCLUDE_DIR
NAMES "gl2.h"
PATH_SUFFIXES "GLES2"
)
message(STATUS "gl2.h => ${GLES_SDK_INCLUDE_DIR}")
是否给予:
-- gl2.h => /usr/include/GLES2