CMake 无法找到 SDL2_ttf,我正在尝试以与 SDL2 相同的方式链接它,并且两者都正确安装在 Ubuntu 18.04 上
Posted
技术标签:
【中文标题】CMake 无法找到 SDL2_ttf,我正在尝试以与 SDL2 相同的方式链接它,并且两者都正确安装在 Ubuntu 18.04 上【英文标题】:CMake is unable to find SDL2_ttf, I'm trying to link it the same way I would with SDL2 and both are properly installed on Ubuntu 18.04 【发布时间】:2019-09-25 23:49:22 【问题描述】:我得到错误:
CMake Error at CMakeLists.txt:11 (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.
这是我的 cmake 文件的样子:
cmake_minimum_required(VERSION 3.14)
project(Smithereens)
set(CMAKE_CXX_STANDARD 17)
add_executable(Smithereens main.cpp)
find_package(SDL2 REQUIRED)
include_directories($SDL2_INCLUDE_DIRS)
find_package(SDL2_ttf REQUIRED)
include_directories($SDL2_ttf_INCLUDE_DIRS)
target_link_libraries(Smithereens $SDL2_LIBRARIES $SDL2_ttf_LIBRARIES)
SDL2 和 SDL2_ttf 都安装在我的机器上,我确定我只是链接不正确,学习 CMake 对我来说是一个巨大的头痛。
【问题讨论】:
它要求的文件是否存在于您的系统上? 我确定我只是链接不正确不,那部分是正确的。 find_package 是失败的原因。 我安装了 SDL2_ttf:sudo apt-get install libsdl2-ttf-dev 如果我从 SDL2_ttf 中删除 2,它将停止抛出错误。但是 TTF 函数都不起作用。find_package(XXX)
仅在有FindXXX.cmake
脚本或XXXConfig.cmake
(xxx-config.cmake
) 之一时有效。有/usr/lib/x86_64-linux-gnu/cmake/SDL2/sdl2-config.cmake
脚本,所以find_package(SDL2)
有效。但是SDL2_ttf
没有这样的脚本,所以你不能使用find_package()
来找到它。相反,它有/usr/lib/x86_64-linux-gnu/pkgconfig/SDL2_ttf.pc
脚本,因此可以使用pkg-config
找到它。有关在 CMake 中使用它的信息,请参阅 that question。
【参考方案1】:
这对我来说很好用,Ubuntu 18.04。
INCLUDE(FindPkgConfig)
PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2)
PKG_SEARCH_MODULE(SDL2IMAGE REQUIRED SDL2_image>=2.0.0)
PKG_SEARCH_MODULE(SDL2TTF REQUIRED SDL2_ttf>=2.0.0)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(SOURCE_FILES main.cpp)
add_executable($PROJECT_NAME $SOURCE_FILES)
target_include_directories($PROJECT_NAME PRIVATE
include $SDL2_INCLUDE_DIRS $SDL2IMAGE_INCLUDE_DIRS $SDL2TTF_INCLUDE_DIRS)
target_link_libraries($PROJECT_NAME PRIVATE
$SDL2_LIBRARIES $SDL2IMAGE_LIBRARIES $SDL2TTF_LIBRARIES)
【讨论】:
以上是关于CMake 无法找到 SDL2_ttf,我正在尝试以与 SDL2 相同的方式链接它,并且两者都正确安装在 Ubuntu 18.04 上的主要内容,如果未能解决你的问题,请参考以下文章
Cmake 无法在 Homebrew 中找到 boost_pyhton 库
在Windows 10上的CLion / CMake中“无法找到SFML”错误?
在 macOS 上使用 Ninja 进行 CMake GUI
CMake 错误:CMake 无法找到与“Unix Makefiles”对应的构建程序。 CMAKE_MAKE_PROGRAM 未设置