Freetype2 неправильно связывается с Windows

Я боролся с freetype2 в течение недели, пытаясь заставить его работать на 32-битной Windows, но он просто не работает. Мой CMakeLists.txt выглядит следующим образом:

cmake_minimum_required(VERSION 3.0.0)
set(CMAKE_CXX_STANDARD 17)

project(template-project) # change the name here

file(GLOB_RECURSE SOURCE_FILES src/*.cpp)
add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES})

list(APPEND CMAKE_PREFIX_PATH "D:/Installs/ProgFiles/glew")

find_package( OpenGL REQUIRED )

include_directories( ${OPENGL_INCLUDE_DIRS} )

# this is so stupid
set(CMAKE_SIZEOF_VOID_P 4)

if (${CMAKE_CXX_COMPILER_ID} STREQUAL Clang)
  # ensure 32 bit on clang
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -target i386-pc-windows-msvc")
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -target i386-pc-windows-msvc")
  add_definitions("--target=i386-pc-windows-msvc")
endif ()

set(FT_DISABLE_HARFBUZZ TRUE)

target_include_directories(${PROJECT_NAME} PRIVATE
  libraries/minhook/include
  libraries/gd.h/include
  libraries/gd.h/
  libraries/imgui
  libraries/glad/include
  libraries/stb
  libraries/freetype2/include
)

add_subdirectory(libraries/minhook)
add_subdirectory(libraries/cocos-headers)
add_subdirectory(libraries/glfw)
add_subdirectory(libraries/glm)
add_subdirectory(libraries/freetype2)

target_link_libraries( ${PROJECT_NAME} ${OPENGL_LIBRARIES} glfw )
if ( MSVC )
    if (${CMAKE_VERSION} VERSION_LESS "3.6.0") 
        message( "\n\t[ WARNING ]\n\n\tCMake version lower than 3.6.\n\n\t - Please update CMake and rerun; OR\n\t - Manually set 'GLFW-CMake-starter' as StartUp Project in Visual Studio.\n" )
    else()
        set_property( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT GLFW-CMake-starter )
    endif ()
endif ()

target_link_libraries(${PROJECT_NAME} opengl32.lib minhook cocos2d rpcrt4.lib glm ${PROJECT_SOURCE_DIR}/libraries/freetype2/objs/Win32/Release/freetype.lib)

Самой большой проблемой в выводе являются следующие строки:

[cmake] -- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE) 
[cmake] -- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR) 
[cmake] -- Could NOT find PNG (missing: PNG_LIBRARY PNG_PNG_INCLUDE_DIR) 
[cmake] -- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR) 
[cmake] -- Could NOT find BZip2 (missing: BZIP2_LIBRARIES BZIP2_INCLUDE_DIR) 
[cmake] -- Could NOT find BrotliDec (missing: BROTLIDEC_INCLUDE_DIRS BROTLIDEC_LIBRARIES) 

Я нахожусь в Windows и совершенно не знаю, как это исправить. Я пытался установить zlib через mingw32 и пытался связать его так же, как я делаю такие вещи, как minhook, но безрезультатно.

Используйте правильный менеджер пакетов!

Osyotr 02.12.2022 20:20

Используете ли вы msys2 для установки MinGW и pacman для установки зависимостей этих библиотек? https://www.msys2.org/

drescherjm 02.12.2022 20:22

@drescherjm Это сработало! Большое спасибо. Не могли бы вы добавить это как ответ, чтобы я мог пометить его как решенный?

DePianoman 03.12.2022 17:17
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
78
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я рекомендую другой подход, чем ручная загрузка зависимостей с открытым исходным кодом при использовании MinGW. Вместо поиска отдельных двоичных загрузок переключитесь на использование msys2 для установки MinGW и используйте управление пакетами msys2 для всех ваших зависимых библиотек с открытым исходным кодом.

Первый шаг — удалить вашу текущую установку MinGW, чтобы у вас не было конфликтующих / возможно несовместимых dll MinGW в вашем PATH, которые могут вызвать проблемы в будущем при выполнении ваших программ.

После этого установите msys2: Как установить MinGW-w64 и MSYS2?

Затем, чтобы установить ваши зависимости для 32-разрядной версии, откройте терминал mingw32, который по умолчанию установлен в «C:\msys64\mingw32.exe», и используйте диспетчер пакетов msys2 pacman для установки зависимых пакетов.

Веб-страница для msys2 имеет удобную функцию поиска пакетов в верхней части этой страницы: https://packages.msys2.org/queue

Давайте начнем с zlib из ваших зависимостей. Введите zlib в поле поиска и нажмите поиск. Введите mingw-w64-zlib, затем найдите пакеты i686 для mingw, чтобы найти правильный пакет для 32-битного mingw. Я нашел следующую ссылку для zlib для mingw32 со следующей страницей: https://packages.msys2.org/package/mingw-w64-i686-zlib?repo=mingw32

Инструкции по установке для этого перечислены в центре страницы: pacman -S mingw-w64-i686-zlib

поэтому скопируйте эту команду в терминал mingw32:

JMDLAPTOP1+dresc@JMDLAPTOP1 MINGW32 ~
# pacman -S mingw-w64-i686-zlib
resolving dependencies...
looking for conflicting packages...

Packages (1) mingw-w64-i686-zlib-1.2.13-2

Total Download Size:   0.10 MiB
Total Installed Size:  0.39 MiB

:: Proceed with installation? [Y/n]

Нажмите Y, чтобы установить этот пакет.

:: Proceed with installation? [Y/n] y
:: Retrieving packages...
 mingw-w64-i686-zlib-1.2.13...   102.8 KiB   126 KiB/s 00:01 [###############################] 100%
(1/1) checking keys in keyring                               [###############################] 100%
(1/1) checking package integrity                             [###############################] 100%
(1/1) loading package files                                  [###############################] 100%
(1/1) checking for file conflicts                            [###############################] 100%
(1/1) checking available disk space                          [###############################] 100%
:: Processing package changes...
(1/1) installing mingw-w64-i686-zlib                         [###############################] 100%

JMDLAPTOP1+dresc@JMDLAPTOP1 MINGW32 ~

Продолжите аналогичный процесс для других зависимых пакетов.

Другие вопросы по теме