Witam, ostatnio zacząłem pracować z C++ z użyciem narzędzia CMake. Tworzę teraz przy wykorzystaniu SFML/GLEW prosty silnik graficzny, stwierdziłem, że jeśli mam projekt rozwijać to bez tego narzędzia się nie obejdzie...
Obecnie moje zastosowanie CMake polega na kopiowaniu zlepków skryptów z Stack-Overflow tak długo aż coś mi wreszcie zadziała. Finalnie po wielu próbach i nerwach napisałem takie coś:
cmake_minimum_required(VERSION 3.9)
project(simple_test)
# SFML
set(SFML_DIR "SFML/lib/cmake/SFML")
set(SFML_STATIC_LIBRARIES TRUE)
find_package(SFML 2.5.1 COMPONENTS graphics)
# GLEW
set(CMAKE_PREFIX_PATH "GLEW/include")
set(CMAKE_LIBRARY_PATH "GLEW/lib")
find_package(GLEW REQUIRED)
add_executable("${PROJECT_NAME}" main.cpp)
target_link_libraries("${PROJECT_NAME}" sfml-graphics GLEW::GLEW)
Skrypt ten poprawnie generuje projekt ( przynajmniej dla systemu windows ).
Zanim przejdę do głównego wątku, miałbym dwa drobne pytania:
- Jak widać, SFML i GLEW dodaje do projektu w totalnie inny sposób, który z nich jest lepszy? Bo teoretyczne SFML mógłbym instalować w taki sam sposób jak GLEW ( tworząc zbiorczy katalog dla skompilowanych plików bibliotek oraz nagłówków ), a zamiast tego w przypadku SFML wywołuje dodatkowy skrypt SFMLConfig.cmake. Nie wiem też czy ten sposób dla GLEW jest odpowiedni, po prostu nie rozumiem tego i brakuje mi jakiegoś sensownego poradnika dla CMake. Jak ktoś mógłby mi wytłumaczyć jak dokładnie działają te metody, lub dał linka do artykułu/filmu gdzie jest to dobrze wytłumaczone to byłbym bardzo wdzięczny :)
- Nie mam totalnie pomysłu jak mogę "dodać GLEW w wersji statycznej", bo na razie muszę mieć plik glew32.dll w katalogu z plikiem exe.
Co do głównego pytania, jak piszę projekt w Node, Python, Rust to mam do dyspozycji jakiś menadżer zasobów ( jak NPM czy PIP ). Do repozytorium wrzucam tylko źródło i odpowiedni plik konfiguracyjny. Tu nie za bardzo wiem co mam zrobić. Czy powiniem umieścić w repozytorium katalogi SFML i GLEW? A może zamiast tego w readme.md powinien być krótki poradnik jak urzytkownik może zbudować projekt u siebie i jakie katalogi musi przenieść w jakie miejsce?... Po prostu chcę zrobić dla siebie solidny szablon który potem mogę sklonować i względnie szybko być w stanie go użyć do projektu bez mordowania się z zależnościami...
Z góry dziękuję za pomoc i pozdrawiam :)