如何将 SDL2 用作我的静态 (CMake ) 库的 3D 方依赖项?

How to use SDL2 as 3d-party dependencie on my static ( CMake ) library?

本文关键字:方依赖 3D 库的 依赖 CMake SDL2 我的 静态      更新时间:2023-10-16

我在Linux上,我在使用静态库的CMake项目中使用SDL2时遇到问题。当我将my_static_library与my_custom_project链接时,尽管我已经将 SDL2 与静态库链接,但我从 SDL2 调用中获得了未定义的引用

例如:my_static_library CMakeLists.txt

[...]
# SDL2 package
find_package(SDL2 REQUIRED)
if (SDL2_FOUND)
message(STATUS ${SDL2_LIBRARY} " SDL2 Library has been found!")
include_directories(${SDL2_INCLUDE_DIR})
else()
message(FATAL_ERROR "Cannot find SDL2 Library!")
endif()
[...]
add_library(my_static_library STATIC ${SOURCE_FILES})
target_link_libraries(nile_static PUBLIC ${SDL2_LIBRARY})

my_custom_project CMakeLists.txt

[...]
target_include_directories(${PRODUCT_NAME} PRIVATE
${MY_STATIC_LIB_DIR}/include)
[...]
target_link_libraries(${PROJECT_NAME} my_static_lib})

除 SDL2 之外的任何其他依赖链接(OpenGL、glew、stb、freetype 等(。

对此有什么想法吗?

如果您的静态库动态链接到 SDL2,则应根据您的项目向项目添加对 SDL2 的搜索。