为了让freetype2在Windows 32位上工作,我已经和它打了一个星期了,但它就是不行。我的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) 我在窗户上,完全不知道怎么修理这些东西。我尝试过通过mingw32安装zlib,并尝试以类似min钩子的方式链接它,但没有结果。
发布于 2022-12-03 16:33:56
在使用MinGW时,我推荐一种与手动下载开源依赖项不同的方法。不是搜索单个二进制下载,而是使用msys2安装MinGW,并对所有依赖的开源库使用msys2的包管理。
第一步是删除当前的MinGW安装,以便您的路径中没有冲突的/可能不兼容的MinGW dll,这可能会在执行程序时引起问题。
之后安装msys2:How to install MinGW-w64 and MSYS2?
然后,要安装32位的依赖项,请打开默认安装在"C:\msys64\mingw32.exe“中的mingw32终端,并使用msys2 pacman的包管理器安装依赖的包。
msys2的网页在这个页面的顶部中心有一个方便的包搜索功能:https://packages.msys2.org/queue。
让我们从依赖项中的zlib开始。在“搜索”框中键入zlib并按“搜索”。然后,键入mingw-w64-zlib,查找i686包,以便为32位mingw找到正确的包。我找到了用于mingw32的zlib的以下链接,页面如下: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 ~继续对其他依赖包进行类似的处理。
https://stackoverflow.com/questions/74660389
复制相似问题