gpt4 book ai didi

c++ - 如何在CMake中手动链接SDL2

转载 作者:行者123 更新时间:2023-12-02 10:17:09 26 4
gpt4 key购买 nike

最近,我开始学习CMake。为了练习,我尝试手动链接SDL2。我知道使用find_file有另一种方法很简单。但是我想自己做练习。

尝试链接libSDL2main.a文件时出现错误(使用cmd mingw32-make运行Makefile)

[ 50%] Linking CXX executable exe0.exe
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: cannot find -llibSDL2main
collect2.exe: error: ld returned 1 exit status
CMakeFiles\exe0.dir\build.make:105: recipe for target 'exe0.exe' failed
mingw32-make[2]: *** [exe0.exe] Error 1
CMakeFiles\Makefile2:94: recipe for target 'CMakeFiles/exe0.dir/all' failed
mingw32-make[1]: *** [CMakeFiles/exe0.dir/all] Error 2
Makefile:102: recipe for target 'all' failed
mingw32-make: *** [all] Error 2

这是我的CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(SDL_Test_Project)
include_directories(include)
add_executable(exe0 main.cpp)
target_link_libraries(exe0 libSDL2main.a)

这里main.cpp只是源文件。我已将SDL2.dlllibSDL2main.a放入项目目录的根目录中。 (我使用CMake GUI在Windows 10中生成Makefile)。

最佳答案

如果要直接以target_link_libraries()链接到SDL2库(不定义IMPORTED目标,或使用find_library()),请使用完整路径访问每个库。 CMAKE_SOURCE_DIR 变量提供CMake项目的根目录的完整路径:

target_link_libraries(exe0 PRIVATE 
mingw32
${CMAKE_SOURCE_DIR}/libSDL2main.a
${CMAKE_SOURCE_DIR}/SDL2.dll
)

注意,对于SLD2,在使用MinGW进行编译时,可能还必须在此命令中添加 mingw32

关于c++ - 如何在CMake中手动链接SDL2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61557332/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com