避免每次都修改编译器和链接器设置以在项目中使用 SDL

Avoid Modifying Compiler and Linker Settings every time to use SDL in projects

我最近开始计划开发一个简单的游戏,为此,我安装了适用于 VS 的 SDL。但是每次我创建一个新项目时,我都必须转到该项目的属性-> 编译器和属性-> 链接器来添加我的 SDL 库。我可以永久包含这些设置吗? 另外,是否有必要在我的项目中每次都包含“.dll”,或者我也可以 link 它们随时使用。

我最近一直在将 CMake 与 VS 和 SDL 结合使用,它稍微减少了这种烦恼。您的顶级目录(以及其他目录,具体取决于您组织项目的方式)将有一个 CMakeLists.txt 文件,用于处理包含目录、查找库和 DLL 以及构建任何依赖项。我当前项目的那个看起来像这样:

cmake_minimum_required(VERSION 3.19)

project(chip8emu VERSION 1.0 DESCRIPTION "Chip-8 Emulator" LANGUAGES CXX)

set(SDL2_INCLUDE_DIR "C:/dev/vclibs/SDL2-2.0.14/include")
set(SDL2_LIBRARY "C:/dev/vclibs/SDL2-2.0.14/lib/x64")

FIND_PACKAGE(Boost REQUIRED COMPONENTS log)
FIND_PACKAGE(wxWidgets)
ADD_DEFINITIONS(-DBOOST_LOG_DYN_LINK)
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
INCLUDE_DIRECTORIES(${wxWidgets_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIR})
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR})
add_executable(chip8emu chip8emu.cpp chip8.cpp chip8.h "logger.h" "logger.cpp" "emuWindow.h" "emuWindow.cpp" "beeper.h" "beeper.cpp" "cApp.h" "cApp.cpp" "cMain.h" "cMain.cpp" )

target_link_libraries(chip8emu PRIVATE Boost::log_setup Boost::log ${SDL2_LIBRARY}/SDL2main.lib ${SDL2_LIBRARY}/SDL2.lib ${wxWidgets_LIB_DIR})

我基本上可以将其复制并粘贴到每个项目目录中(更改 add_executable() 行)。

这种方法有优点也有缺点,但我喜欢它,因为它可以很容易地集成库,并且减少了我对 VS 的依赖。 This 是一个很好的入门教程(虽然它看起来很吓人,但它非常简单)。