Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 避免每次修改编译器和链接器设置以在项目中使用SDL_Visual Studio_Visual Studio Code_Dll_Linker_Sdl - Fatal编程技术网

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

Visual studio 避免每次修改编译器和链接器设置以在项目中使用SDL,visual-studio,visual-studio-code,dll,linker,sdl,Visual Studio,Visual Studio Code,Dll,Linker,Sdl,我最近开始计划开发一个简单的游戏,为此,我安装了VS的SDL。但每次我创建一个新项目时,我都必须转到该项目的属性->编译器和属性->链接器来添加我的SDL库。我可以永久包括这些设置吗。 另外,是否有必要在我的项目中每次都包含“.dll”,或者我也可以将它们链接起来,以便随时使用。最近我一直在将CMake与VS和SDL一起使用,它稍微减少了这种麻烦。您的顶级目录(以及其他目录,具体取决于您组织项目的方式)将有一个CMakeLists.txt文件,该文件处理包括目录、查找库和DLL以及构建任何依赖项

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

最近我一直在将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\u executable()
行)

这种方法有积极的一面,也有消极的一面,但我喜欢它,因为它使集成库变得容易,并且使我不那么依赖VS。这是一个很好的入门教程(虽然它看起来很吓人,但它非常简单)