LINUX.ORG.RU

Сообщения Gyros

 

FreeType2 и mingw32: как получить библиотеку, с которой можно собрать проект для Windows

Всем добрый вечер! Собственно вопрос в заголовке. Конкрентно интересует для версии FreeType 2.11.1.

Готовую библиотеку что-то навскидку найти не удалось.

Пробовал собирать на месте. Обычную для Linux и g++ без проблем. А для mingw32

В файле INSTALL.GNU говориться заменить config.mk на w32-mingw32.mk из freetype-2.11.1/builds/windows/ Но это ничего не дает:

make CC="x86_64-w64-mingw32-c++"
Вывод:
make: type: Command not found
make: *** No rule to make target '.\src\tools\apinames.c', needed by '.\objs\apinames.exe'.  Stop.

PS Т.е. я правильно понимаю что для того чтобы получить библиотеку (которую можно будет кинуть в /usr/x86_64-w64-mingw32/lib/ и далее использовать для др. проектов для Windows) необходимо собрать исходники FreeType компилятором mingw32?

 

Gyros
()

Cmake, mingw32 и сборка под Ubuntu для получения exe-файла

Добрый день всем! Есть простенькое графическое приложение, которое без проблем собирается вызовом:

x86_64-w64-mingw32-c++  sailboat.c  -o sailboat.exe  -lglfw3dll -lglfw3 -static-libgcc -static-libstdc++  -lopengl32  -Wl,--subsystem,windows
На выходе получаем exe-шник, который запускается под Windows (или Wine).

Однако, если использовать CMake:

cmake_minimum_required(VERSION 3.0)	# Проверка версии CMake.
					

set (PROJECT sailboat) 		        # Название проекта
project(${PROJECT})

set(OpenGL_GL_PREFERENCE LEGACY)
find_package(OpenGL REQUIRED)
find_package(glfw3  REQUIRED)
include_directories(${OPENGL_INCLUDE_DIR})


find_library(PTHREAD_LIB pthread)

                                   # Установка переменной со списком исходников для исполняемого файла
#set (SOURCES  gl_core_4_3.c)
#set (HEADERS  gl_core_4_3.h)
set (LIBS ${LIBS} ${OPENGL_LIBRARY} ${GLFW_LIBRARIES} )


set (MINGW=ON)
set (CMAKE_SYSTEM_NAME=Windows)
#set_target_properties (${PROJECT} PROPERTIES CMAKE_WIN32_EXECUTABLE True)

set( CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "" )
set( CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "" )

set (BUILD_SHARED_LIBS=OFF)
set (BUILD_CLAR=OFF)
set (THREADSAFE=ON)

set (CMAKE_C_COMPILER   /usr/bin/x86_64-w64-mingw32-c++)
set (CMAKE_CXX_COMPILER /usr/bin/x86_64-w64-mingw32-c++)

set(CMAKE_C_FLAGS   "${CMAKE_C_FLAGS}   -static")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static")

set(CMAKE_LIBRARY_PATH /usr/x86_64-w64-mingw32/lib)

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--subsystem,windows")


add_executable (${PROJECT} WIN32 ${HEADERS} ${SOURCES} sailboat.c)    # Создает исполняемый файл с именем PROJECT

set_target_properties (${PROJECT} PROPERTIES LINK_FLAGS_DEBUG   "/SUBSYSTEM:windows")
set_target_properties (${PROJECT} PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:windows")       

#set(CMAKE_EXE_LINKER_FLAGS "-static -static-libgcc -static-libstdc++ -lglfw3dll")

target_include_directories(${PROJECT} PUBLIC
                           $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
                           $<INSTALL_INTERFACE:include>)


				  # Линковка программы с библиотеками
#target_link_libraries( PUBLIC glfw  ${PTHREAD_LIB} )
target_link_libraries(${PROJECT} PUBLIC ${OPENGL_gl_LIBRARY} glfw)
то происходит такая вещь:

[ 50%] Linking C executable sailboat
/usr/bin/x86_64-w64-mingw32-ld: cannot find -lGL
/usr/bin/x86_64-w64-mingw32-ld: cannot find -lrt
/usr/bin/x86_64-w64-mingw32-ld: cannot find -ldl
/usr/bin/x86_64-w64-mingw32-ld: cannot find -lX11
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/sailboat.dir/build.make:89: sailboat] Error 1
make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/sailboat.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

Вообще-то линкер не должен требовать этих библиотек для сборки для Windows. В чем причина?

PS Извините, я новичок в CMake, поэтому CMakeLists.txt такой сумбурный.

 

Gyros
()

RSS подписка на новые темы