Как заставить CMake и MSYS2/pacman работать вместе над библиотеками?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как заставить CMake и MSYS2/pacman работать вместе над библиотеками?

Сообщение Anonymous »

Я создаю приложение с использованием группы библиотек SDL2 для Windows. Я использую CMake и Visual C++. Чтобы получить библиотеки, я использовал pacman в M2SYS в версии MINGW64. Вот что он думает:
$ pacman -Qs sdl2
local/mingw-w64-ucrt-x86_64-SDL2 2.30.8-1
A library for portable low-level access to a video framebuffer, audio output, mouse, and
keyboard (Version 2) (mingw-w64)
local/mingw-w64-ucrt-x86_64-SDL2_gfx 1.0.4-2
SDL graphics drawing primitives and other support functions (Version 2) (mingw-w64)
local/mingw-w64-ucrt-x86_64-SDL2_image 2.8.2-3
A simple library to load images of various formats as SDL surfaces (Version 2) (mingw-w64)
local/mingw-w64-ucrt-x86_64-SDL2_sound 2.0.2-1
A library to decode several popular sound file formats, such as .WAV and .MP3 (mingw-w64)
local/mingw-w64-ucrt-x86_64-SDL2_ttf 2.22.0-1
A library that allows you to use TrueType fonts in your SDL applications (Version 2) (mingw-w64)

Когда я ищу файлы, включающие, например, sdl2_gfx, я вижу следующее:
C:\msys64\ucrt64\bin\libSDL2_gfx-1-0-0.dll
C:\msys64\ucrt64\include\SDL2\SDL2_gfxPrimitives.h
C:\msys64\ucrt64\lib\libSDL2_gfx.a
C:\msys64\ucrt64\lib\libSDL2_gfx.dll.a
C:\msys64\ucrt64\lib\pkgconfig\SDL2_gfx.pc
C:\msys64\ucrt64\share\licenses\SDL2_gfx

Но затем я пытаюсь выполнить сборку из файла CMakeLists.txt, как показано ниже, и получаю такие ошибки:
LNK1104 cannot open file 'SDL2_gfx.lib'

Если я уточню и изменю ссылку на библиотеку на libSDL2_gfx.a, она затем начнет искать libSDL2_gfx.a.lib, та же ошибка.
Компоновщик CMake ищет неправильные вещи. Как лучше всего уговорить его поискать нужную вещь? (Или Pacman предлагает правильные вещи?)
Вот CMakeLists.txt:
cmake_minimum_required(VERSION 3.28)
project(my-project)
set (CMAKE_CXX_STANDARD 11)

set (TEST Library/Win/Drawbox.Win.cpp Test/CheckerCheckerBoardBoard.cpp Library/Win/Keyboard.Win.cpp)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
include_directories(. Library Tools Toolkit APClass Library/jpeg)

include(Library/CMakeLists.txt)
include(Tools/CMakeLists.txt)
include(APClass/CMakeLists.txt)

add_library(Drawbox STATIC ${DRAWBOX} ${TOOLS} ${APCLASS})
add_executable(TestProgram ${TEST} ${DRAWBOX} ${TOOLS} ${APCLASS})

target_compile_features(Drawbox PUBLIC cxx_std_11)
target_compile_options(Drawbox PRIVATE )

target_compile_features(TestProgram PUBLIC cxx_std_11)
target_compile_options(TestProgram PRIVATE )

#add_executable(Test Test/ClickDraw.cpp)
target_link_libraries(TestProgram ${SDL2_LIBRARIES} libSDL2_gfx.a
SDL2_image
SDL2_ttf
SDL2_mixer
)


Подробнее здесь: https://stackoverflow.com/questions/793 ... -libraries
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»