簡體   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