我有一个 C++ 项目,我想在其中使用库
SDL2
和 SDL2_image
,我从官方 git 存储库下载了最新的 -VC
版本,并将它们放在我的项目中名为 external/ 的文件夹中。
然后我创建了一个 CMakeLists.txt 来构建我的项目,在那里我指定了库的路径并使用 target_link_libraries 来链接它们。
CMakeLists.txt:
set(SDL2_DIR "C:/../external/SDL2-2.28.5/cmake")
set(SDL2_image_DIR "C:/../external/SDL2_image-2.8.1/cmake")
find_package(SDL2 REQUIRED)
find_package(SDL2_image REQUIRED)
target_include_directories(main SYSTEM PUBLIC "C:/../external/SDL2-2.28.5/include")
target_include_directories(main SYSTEM PUBLIC "C:/../external/SDL2_image-2.8.1/include")
target_link_libraries(main ${SDL2_LIBRARIES} ${SDL2_IMAGE_LIBRARIES})
现在,虽然这对于标准
SDL2
库工作得很好,但当我尝试使用 SDL2_image
库中的函数时,我得到了未定义的引用。
我的系统运行Windows 11,我使用VSCode作为IDE。 我使用的编译器是g++。
提前致谢!
我能够在 CMakeLists.txt 中使用此命令修复它:
target_link_libraries(myProject SDL2::SDL2main SDL2::SDL2 SDL2_image::SDL2_image)
而不是:
target_link_libraries(主 ${SDL2_LIBRARIES} ${SDL2_IMAGE_LIBRARIES})