我最近发现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)
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()