我最近发现最新版本的 SDL2(版本 2.0.12)现在带有所有必需的 CMake 配置/安装脚本,因此不再需要使用 FindSDL。
我从https://www.libsdl.org/download-2.0.php 下载了 SDL 源代码,然后从根文件夹运行...
cmake -S . -B build/debug -G Ninja -DCMAKE_INSTALL_PREFIX=./install -DCMAKE_BUILD_TYPE=Debug
cmake --build build/debug --target install
这将构建并安装库的调试版本,然后您还可以运行...
cmake -S . -B build/release -G Ninja -DCMAKE_INSTALL_PREFIX=./install -DCMAKE_BUILD_TYPE=Release
cmake --build build/release --target install
这将构建和安装库的发布版本(并且由于 SDL CMake 脚本使用 DEBUG_POSTFIX 库的发布版本不会覆盖调试版本,因为调试版本都在其名称后附加了“d”) .
在您的 CMakeLists.txt 文件中,您可以简单地执行以下操作:
find_package(SDL2 REQUIRED)
add_executable(${PROJECT_NAME} ...)
target_link_libraries(
${PROJECT_NAME} PRIVATE
SDL2::SDL2
SDL2::SDL2main
如果您像我在示例中所做的那样使用自定义位置,则需要告诉您的应用程序在哪里可以找到 SDL 安装文件夹。要从应用程序的根文件夹执行此操作,请运行:
cmake -S . -B build/debug -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_PREFIX_PATH=</absolute/path/to/install/dir>
cmake --build build/debug
注意:您可以使用 $(pwd) (*nix/macOS) 或 %cd% (Windows) 创建一个非常有用的混合相对路径。
如果要将 SDL 安装到默认系统位置,可以省略 DCMAKE_INSTALL_PREFIX 和 DCMAKE_PREFIX_PATH。
在示例中,我选择使用 Ninja 生成器,因为它在 macOS/Windows 上是一致的 - 它可以与 MSVC/Visual Studio 一起使用,只需确保运行它(路径可能会因年份/版本而略有不同) 将 Ninja 添加到您的路径中。
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat
更新:
我记得在 Windows 上有用的另一件事是能够将 SDL .dll 文件复制到应用程序二进制目录中,可以这样实现:
if (WIN32)
# copy the .dll file to the same folder as the executable
add_custom_command(
TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
$<TARGET_FILE:SDL2::SDL2>
$<TARGET_FILE_DIR:${PROJECT_NAME}>
VERBATIM)
endif()