Cześć,
Dziękuję wszystkim za zainteresowanie projektem hbgl-c! Cieszę się, że projekt przyciągnął uwagę społeczności i z przyjemnością odpowiem na wasze pytania.
Struktura katalogów, takich jak ../lib/win/mingw64, została zaprojektowana z myślą o elastyczności i możliwości dostosowania do różnych środowisk. Różnorodność platform i kompilatorów to rzeczywistość, z którą się stykamy, i chcemy zapewnić, że nasza biblioteka będzie jak najbardziej dostępna. Obejmuje to różne wersje Windows, różne systemy Unixowe oraz szeroką gamę kompilatorów, takich jak:
lib/win/bcc
lib/win/bcc64
lib/win/gcc
lib/win/global
lib/win/icc
lib/win/icc64
lib/win/iccia64
lib/win/mingw
lib/win/mingw64
lib/win/msvc
lib/win/msvc64
lib/win/msvcia64
Co więcej, uważam, że Makefile to nadal bardzo skuteczne i proste narzędzie do kompilacji bibliotek i zarządzania projektami w C/C++. Jego prostota i przejrzystość sprawiają, że jest to narzędzie wyjątkowo użyteczne, szczególnie w przypadku mniejszych projektów lub w sytuacjach, gdzie potrzebujemy bezpośredniej kontroli nad procesem kompilacji.
Niemniej jednak, świadomi jesteśmy, że narzędzia takie jak CMake mogą zaoferować większą przenośność i wygodę w konfiguracji, zwłaszcza w przypadku bardziej złożonych projektów. Dlatego też rozważamy rozwój i wsparcie dla CMake w przyszłych wersjach hbgl-c.
Biblioteka hbgl-c jest w dużej mierze eksperymentalnym projektem, który ewoluuje w zależności od potrzeb i opinii użytkowników. Wszelkie sugestie i feedback są niezmiernie cenne i serdecznie zapraszam do dzielenia się swoimi doświadczeniami oraz propozycjami dotyczącymi projektu. Chciałbym również dodać, że długoterminowym celem dla hbgl-c jest stworzenie wydajnego i elastycznego narzędzia do budowy interfejsów użytkownika (GUI).
przykładowy plik CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(hbgl-c)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -O3")
include_directories(include)
file(GLOB SOURCES "src/*.c")
if (WIN32)
set(DESTDIR "${PROJECT_SOURCE_DIR}/lib/win/mingw64")
else ()
set(DESTDIR "${PROJECT_SOURCE_DIR}/lib/linux/gcc")
endif()
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${DESTDIR})
add_library(hbgl STATIC ${SOURCES})
set(OpenGL_GL_PREFERENCE "LEGACY")
find_package(OpenGL REQUIRED)
find_package(glfw3 REQUIRED)
if(TARGET glfw) # glfw for some Linux distributions
set(GLFW_LIBRARIES glfw)
elseif(TARGET glfw3) # glfw3 for others like Windows
set(GLFW_LIBRARIES glfw3)
else()
message(FATAL_ERROR "GLFW not found")
endif()
add_subdirectory(examples)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
add_executable(horizontal_image_gallery horizontal_image_gallery.c)
target_link_libraries(horizontal_image_gallery hbgl ${OPENGL_LIBRARIES} ${GLFW_LIBRARIES} m)
# itd.
Z poważaniem,
--Rafał Jopek
harbour pl