首页 > 解决方案 > 使用 Hunter 构建 SDL2

问题描述

我正在尝试使用 Hunter 包管理器包含 SDL2。

hunter_add_package(sdl2)
find_package(SDL2 CONFIG REQUIRED)

包已下载,但未定义包含目录,所以这没有任何作用

include_directories(${SDL2_INCLUDE_DIR})

并且编译失败,尝试#include SDL。

如果我使用 brew install sdl2 手动安装 SDL2、fx,并手动设置包含路径和链接库,一切正常。但我希望它可以使用包管理器工作。

的 cmake 。命令确实显示以下内容,不确定其相关:

-- [hunter] SDL2_ROOT: /Users/martin/.hunter/_Base/9b96c37/6b5f9d6/aceec4e/Install (ver.: 2.0.7-p3)
CMake Warning (dev) at CMakeLists.txt:24 (find_package):
  Policy CMP0074 is not set: find_package uses <PackageName>_ROOT variables.
  Run "cmake --help-policy CMP0074" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.

  CMake variable SDL2_ROOT is set to:

    /Users/martin/.hunter/_Base/9b96c37/6b5f9d6/aceec4e/Install

  Environment variable SDL2_ROOT is set to:

    /Users/martin/.hunter/_Base/9b96c37/6b5f9d6/aceec4e/Install

  For compatibility, CMake is ignoring the variable.
This warning is for project developers.  Use -Wno-dev to suppress it.

使用 cmake 。-Wno-dev 确实使警告消失,但仍然没有运气找到包含。

任何提示表示赞赏。

标签: c++

解决方案


是的,该警告非常相关。您应该将 CMP0074 策略设置为 NEW 行为:

cmake_policy(SET CMP0074 NEW)

这将使其尊重SDL_ROOT变量提供的设置。


推荐阅读