• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kompilacja SFML na Ubuntu z użyciem CMake - brak CMakeLists.txt

+1 głos
1,130 wizyt
pytanie zadane 28 sierpnia 2016 w C i C++ przez easytodo Mądrala (5,380 p.)

Witam,

podczas pisania aplikacji w SFML, przy próbie użycia metody texture.loadFromFile(std::string path), napotkałem problem. Otóż kompilator g++ w CodeLite wyrzuca taki błąd:
undefined reference to 'sf::Texture::loadFromFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, sf::Rect<int> const&)'

W sieci znalazłem rozwiązanie tego problemu - ponowna kompilacja SFML przy użyciu programu CMake.

Problem tkwi w tym, że mój folder z nowo pobraną paczką SFML'a nie zawiera pliku CMakeLists.txt, przez co kompilacja przez CMake jest niemożliwa. 

Bibliotekę pobrałem stąd: http://www.sfml-dev.org/download/sfml/2.4.0/ (zakładka Linux -> GCC-64-bit, korzystam z Ubuntu 16.04 LTS)
Kieruję się tym tutorialem: http://seriousitguy.blogspot.com/2014/05/how-to-setup-sfml-on-ubuntu-1404-lts.html

A to błąd który otrzymuję po wpisaniu w konsoli: cmake -G "Unix Makefiles" -D CMAKE_BUILD_TYPE=Debug -D BUILD_SHARED_LIBS=TRUE .

CMake Error: The source directory "/home/chris/dev/sfml/SFML-2.4.0" does not appear to contain CMakeLists.txt.

Proszę o pomoc w poprawnym skompilowaniu SFML'a lub o podanie innego sposobu aby działał on bez problemu z CodeLitem.

Ładowanie tekstur działa, ale tylko, gdy program kompiluję z poziomu konsoli komendami:

>  g++ -c main.cpp

> g++ main.o -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system

> ./sfml-app

(CodeLite przy budowaniu projektu dalej jest cały czerwony od 'undefined references')

 

4 odpowiedzi

+1 głos
odpowiedź 28 sierpnia 2016 przez criss Mędrzec (172,570 p.)
wybrane 29 sierpnia 2016 przez easytodo
 
Najlepsza

Pobierz z githuba i nie powinno być problemu https://github.com/SFML/SFML

0 głosów
odpowiedź 29 sierpnia 2016 przez easytodo Mądrala (5,380 p.)

Po pobraniu kodu z GitHuba brakujący plik jest, ale pojawiły się następne błędy i już nie wiem co z tym zrobić...

-- Could NOT find LIBXCB_IMAGE (missing:  LIBXCB_IMAGE_LIBRARY)  
CMake Error at cmake/Modules/FindXCB.cmake:93 (message): 
  xcb-image not found 
Call Stack (most recent call first): 
  src/SFML/Window/CMakeLists.txt:209 (find_package)

Próbowałem pobrać: https://launchpad.net/ubuntu/+source/xcb-util-image/0.4.0-1build1 
ale mam problemy z komendą 'make'. Po wpisaniu make: 
make: *** Nie podano obiektów i nie znaleziono makefile. Stop. 
A po wpisaniu ls wyświetlają się m.in. następujące pliki: 
Makefile.am, Makefile.in

Wpisywałem już sudo apt-get install build-essential

0 głosów
odpowiedź 29 sierpnia 2016 przez afferu Mądrala (5,220 p.)
Jak masz linuxa, to pobierz sobie przez apt libsfml2-dev cały pakiet biblioteki. Albo ściągnij skompilowane dll ze strony sfml. Do normalnego użytku chyba nie potrzeba dokonywać kompilacji samemu.
komentarz 29 sierpnia 2016 przez unknown Nałogowiec (39,560 p.)
Trzeba jeśli nie używa default'owego kompilatora.
komentarz 29 sierpnia 2016 przez easytodo Mądrala (5,380 p.)

Ok pobrałem wszystkie potrzebne paczki i skompilowałem CMakiem errora żadnego nie wyrzuciło ale po podlinkowaniu wszystkiego do CodeLite'a przy budowaniu projektu dostaję taki komunikat: 

/bin/sh -c '/usr/bin/make -j8 -e -f  Makefile'
----------Building project:[ SFML-Flashcards - Debug ]----------
make[1]: Entering directory '/home/chris/CodeLiteProjects/SFML-Flashcards'
/usr/bin/g++ -o ./Debug/SFML-Flashcards @"SFML-Flashcards.txt" -L. -L/home/chris/dev/sfml/SFML/lib  -lsfml-graphics -lsfml-window -lsfml-audio -lsfml-network -lsfml-system
/usr/bin/ld: ./Debug/SFML-Flashcards: hidden symbol `__cpu_model' in /usr/lib/gcc/x86_64-linux-gnu/5/libgcc.a(cpuinfo.o) is referenced by DSO
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
SFML-Flashcards.mk:76: recipe for target 'Debug/SFML-Flashcards' failed
make[1]: *** [Debug/SFML-Flashcards] Error 1
make[1]: Leaving directory '/home/chris/CodeLiteProjects/SFML-Flashcards'
Makefile:4: recipe for target 'All' failed
make: *** [All] Error 2
====1 errors, 0 warnings====

 

0 głosów
odpowiedź 29 sierpnia 2016 przez easytodo Mądrala (5,380 p.)

Problem rozwiązany! Może komuś się przyda: pobrać paczkę z githuba, zostawić CMake w spokoju i nic nim nie kompilować, podpiąć SFML'a pod IDE i wszystko działa :)
+ w razie potrzeby pobrać wszystkie pakiety stąd: https://gist.github.com/NoobsArePeople2/8086528

komentarz 29 sierpnia 2016 przez criss Mędrzec (172,570 p.)
CMake nie kompiluje, tylko tworzy projekt pod wybrane środowisko, który następnie się kompiluje.

Podobne pytania

0 głosów
0 odpowiedzi 900 wizyt
pytanie zadane 29 lipca 2021 w C i C++ przez wokiap Nowicjusz (240 p.)
0 głosów
0 odpowiedzi 686 wizyt
pytanie zadane 13 grudnia 2016 w C i C++ przez Knayder Nałogowiec (37,640 p.)
0 głosów
1 odpowiedź 405 wizyt
pytanie zadane 5 maja 2016 w C i C++ przez niezalogowany

93,735 zapytań

142,671 odpowiedzi

323,294 komentarzy

63,297 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...