MSYS2 + MinGW-w64 上 CMake 找不到 SDL2_ttf 库怎么办?
2024-03-11 10:21:38
## 在 MSYS2 + MinGW-w64 上使用 CMake 查找 SDL2_ttf 库的指南
问题概述
在 Windows 下使用 MinGW 编译 SDL2 项目时,CMake 可能无法找到 SDL2_ttf 库。这会导致以下错误消息:
CMake Error at CMakeLists.txt:14 (find_package):
By not providing "FindSDL2_ttf.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "SDL2_ttf",
but CMake did not find one.
Could not find a package configuration file provided by "SDL2_ttf" with any
of the following names:
SDL2_ttfConfig.cmake
sdl2_ttf-config.cmake
Add the installation prefix of "SDL2_ttf" to CMAKE_PREFIX_PATH or set
"SDL2_ttf_DIR" to a directory containing one of the above files. If
"SDL2_ttf" provides a separate development package or SDK, be sure it has
been installed.
解决步骤
1. 验证安装
首先,确保已经安装了 mingw-w64-x86_64-SDL2
和 mingw-w64-x86_64-SDL2_ttf
软件包。
2. 检查 CMake 配置
接下来,验证 CMake 配置文件 /mingw64/lib/cmake/SDL2_ttf/sdl2_ttf-config.cmake
是否已正确安装。
3. 更新 CMakeLists.txt
要解决此问题,需要在 CMakeLists.txt 中设置 SDL2_ttf_DIR
,使其指向 SDL2_ttf CMake 配置文件所在的目录:
set(SDL2_ttf_DIR "/mingw64/lib/cmake/SDL2_ttf")
或者,也可以将 SDL2_ttf 的安装目录添加到 CMAKE_PREFIX_PATH
中:
set(CMAKE_PREFIX_PATH "/mingw64/lib/cmake/SDL2_ttf")
4. 重新运行 CMake
更新 CMakeLists.txt 后,重新运行 CMake 以生成项目文件。
示例 CMakeLists.txt
以下是一个示例 CMakeLists.txt,展示了如何设置 SDL2_ttf_DIR
:
cmake_minimum_required(VERSION 3.16)
project(project VERSION 0.0.1)
file(GLOB SOURCE_FILES
src/[a-z]*.c
)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED YES)
set(CMAKE_C_EXTENSIONS OFF)
set(SDL2_ttf_DIR "/mingw64/lib/cmake/SDL2_ttf")
find_package(SDL2 REQUIRED)
find_package(SDL2_ttf REQUIRED)
set(C_FLAGS "-rdynamic")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${C_FLAGS}")
ADD_EXECUTABLE(${PROJECT_NAME} ${SOURCE_FILES})
TARGET_LINK_LIBRARIES(${PROJECT_NAME}
SDL2::SDL2
SDL2_ttf
)
结论
通过设置 SDL2_ttf_DIR
或更新 CMAKE_PREFIX_PATH
,可以解决 CMake 找不到 SDL2_ttf 库的问题。
常见问题解答
1. 为什么会出现这个错误?
此错误通常是由以下原因引起的:
- SDL2_ttf 库未正确安装
- CMake 配置文件不存在或未安装在正确的目录中
- CMakeLists.txt 中未正确设置
SDL2_ttf_DIR
或CMAKE_PREFIX_PATH
2. 我可以在哪里找到 SDL2_ttf 库?
SDL2_ttf 库通常安装在 /mingw64/lib
目录中。
3. CMake 配置文件是什么?
CMake 配置文件包含有关库的信息,例如其头文件和库文件的路径。
4. 如何更新 CMakeLists.txt?
使用文本编辑器(例如 Notepad++ 或 Visual Studio Code)打开 CMakeLists.txt,并添加 set(SDL2_ttf_DIR "/mingw64/lib/cmake/SDL2_ttf")
行。
5. 如何重新运行 CMake?
在命令行中,导航到项目目录并输入以下命令:
cmake -G <generator> .