[英]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.