繁体   English   中英

将 CMAKE find_package 与 SDL2 一起使用

[英]Using CMAKE find_package with SDL2

我有一个项目使用CMAKE,需要链接SDL2。 我试图了解 find_package 是如何工作的。 在过去的某个时刻,我可以通过提供我自己的 FindSDL2.cmake 来让 find_package 工作,但是在出现一些新的 linker 错误之后,我决定尝试不同的方法。 我正在做的阅读似乎暗示,在我安装了 libsdl2-dev package 之后,我应该能够只使用 find_package(SDL2 REQUIRED) 然后 target_link_libraries(Suqua PRIVATE SDL2::SDL2),但是 Z272CEADB8458515B2AE4B5630CC package 未找到错误。 我是否需要提供自定义 FindSDL2.cmake?

CMakeLists.txt

    cmake_minimum_required (VERSION 3.8)

set(CMAKE_CXX_STANDARD 17)

find_package(SDL2 CONFIG REQUIRED)

file(GLOB source_files
    "src/*.cpp"
    "header/*.h"
)

add_library(Suqua ${source_files} "src/glad.c" )

target_include_directories(Suqua PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/header)
target_include_directories(Suqua PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../include)

target_link_libraries(Suqua PRIVATE SDL2::SDL2 enet)

if(UNIX)
    target_link_libraries(Suqua PRIVATE stdc++fs)
endif()

错误

CMake Error at Suqua/CMakeLists.txt:13 (add_library):
  Target "Suqua" links to target "SDL2::SDL2" but the target was not found.
  Perhaps a find_package() call is missing for an IMPORTED target, or an
  ALIAS target is missing?

谢谢,如果您对我的 CMakeLists 有任何其他批评,我们将不胜感激!

Tsyvarev 提供的答案

使用已安装的库(不是从源代码构建的)时,请使用 SD2_LIBRARIES 变量。

另一方面,我实际上在早些时候修复了这个问题,但是当我遇到与链接 CMAKE_DL_LIBS 相关的 linker 错误时,假设我做错了,我将其删除,因为我认为它没有做任何事情:/ 肯定会通读 CMake书。 谢谢大家!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM