我已经和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)
我用的是windows,完全不知道如何修复这些问题。我试过通过mingw32安装zlib,我也试过用类似minhook的方法链接它,很高兴没有用。
1条答案
按热度按时间pzfprimi1#
我建议在使用MinGW时使用一种与手动下载开源依赖项不同的方法。与其搜索单独的二进制下载,不如切换到使用msys 2来安装MinGW,并使用msys 2的包管理来管理所有依赖的开源库。
第一步是删除当前的MinGW安装,这样PATH中就没有冲突/可能不兼容的MinGW dll,这可能会在将来执行程序时导致问题。
然后安装msys 2:How to install MinGW-w64 and MSYS2?
然后打开mingw 32终端,默认情况下安装在“C:\msys64\mingw32.exe”中,并使用msys 2
pacman
的软件包管理器来安装依赖软件包。msys 2的网页在此页面的上方中央有一个方便的套件搜寻功能:https://packages.msys2.org/queue
让我们从依赖项中的
zlib
开始。在搜索框中输入zlib
,然后按search。输入mingw-w64-zlib
,然后查找mingw的i686软件包,以找到32位mingw的正确软件包。我找到了mingw 32的zlib的以下链接,它有以下页面:https://packages.msys2.org/package/mingw-w64-i686-zlib?repo=mingw32的安装说明列在页面中央:
pacman -S mingw-w64-i686-zlib
因此,将此命令复制到mingw 32终端:
按Y安装此软件包。
对其他相关程序包继续执行类似的过程。