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

wxWidgets - budowanie i uruchamianie programów z folderu "demos"

VPS Starter Arubacloud
0 głosów
317 wizyt
pytanie zadane 8 sierpnia 2022 w Systemy operacyjne, programy przez Bilib Użytkownik (990 p.)
Witam!

Na moim komputerze z Windows 10 zainstalowałem bibliotekę wxWidgets w wersji 3.2.0, abym mógł tworzyć własne programy okienkowe z pomocą środowiska Code::Blocks. Chciałbym jednak przejrzeć sobie na początek przykładowe programy w folderach "demos" oraz "samples", lecz nie ma tam utworzonych plików z rozszerzeniem .exe. Znajdują się tam m.in. pliki .cpp, .h czy makefile.gcc, który, z tego co mi wiadomo, należy w jakiś sposób uruchomić, aby stworzyć potrzebne pliki, w tym plik .exe. Niestety nie wiem, jak to zrobić. Pytanie brzmi: jak taki plik .exe zbudować i uruchomić?
komentarz 9 sierpnia 2022 przez j23 Mędrzec (195,220 p.)

zainstalowałem bibliotekę wxWidgets w wersji 3.2.0

Czyli co dokładnie zrobiłeś?

lecz nie ma tam utworzonych plików z rozszerzeniem .exe.

... bo te powstają w trakcie kompilacji biblioteki (choć nie wiem, czy domyślnie - dawno nie kompilowałem wxów).

1 odpowiedź

+1 głos
odpowiedź 9 sierpnia 2022 przez edwardkraweznik Dyskutant (9,930 p.)

Nie wiem co dokładnie zrobiłeś ale ja bardzo często używam wxwidgets i zrobiłbym tak:

1. skompilować bibliotekę:

./configure --jakieśopcje

make

make install

2. utworzyć jakiś projekt:

przykład --> https://docs.wxwidgets.org/3.1.4/overview_helloworld.html

3. kompilacja projektu

kompilujesz normalnie za pomocą g++ w katalogu z biblioteką masz plik wx-config, który zwraca ci flagi i biblioteki

sprawdź sobie: wx-config --libs, wx-config --cxxflags

ja sobie kompiluję wszytko przy pomocy makefile, poniżej przykład

$(info Opcje: l64gtk3 l64gtk2 w32 w64 )

ifndef HOST
$(error zmienna HOST nie zdefiniowana...)
endif

$(info Kompilacja dla: $(HOST))

ifeq ($(HOST), l64gtk3)
	PP = -D __LINUX__
	CXX = g++
	APPNAME = lin64gtk3/app_gtk3
	OBJDIR = objgtk3
	WXFLAGS = /home/joszi/wxwidgets_3.2.0/lin64gtk3/bin/wx-config --cxxflags
	WXLIBS = /home/joszi/wxwidgets_3.2.0/lin64gtk3/bin/wx-config --libs

else ifeq ($(HOST), l64gtk2)
	CXX = g++
	APPNAME = lin65gtk2/app_gtk2
	OBJDIR = objgtk2
	WXFLAGS = /home/joszi/wxwidgets_3.2.0/lin64gtk2/bin/wx-config --cxxflags
	WXLIBS = /home/joszi/wxwidgets_3.2.0/lin64gtk2/bin/wx-config --libs

else ifeq ($(HOST), w32)
	CXX = i686-w64-mingw32-g++
	APPNAME = win32/app_w32.exe
	OBJDIR = objwin32
	WXFLAGS = /home/joszi/wxwidgets_3.2.0/win32/bin/wx-config --cxxflags
	WXLIBS = /home/joszi/wxwidgets_3.2.0/win32/bin/wx-config --libs

else ifeq ($(HOST), w64)
	CXX = x86_64-w64-mingw32-g++
	APPNAME = win64/app_w64.exe
	OBJDIR = objwin64
	WXFLAGS = /home/joszi/wxwidgets_3.2.0/win64/bin/wx-config --cxxflags
	WXLIBS = /home/joszi/wxwidgets_3.2.0/win64/bin/wx-config --libs

endif

OPT = -O2 -Wall

all: $(OBJDIR)/main.o $(OBJDIR)/serial.o $(OBJDIR)/status.o
	rm -f bin/$(APPNAME)
	$(CXX) $(OBJDIR)/*.o `$(WXLIBS)` -o bin/$(APPNAME)

clean:
	rm -f $(OBJDIR)/*.o

$(OBJDIR)/main.o: src/main.cpp src/main.hpp
	$(CXX) $(PP) src/main.cpp $(OPT) -c `$(WXFLAGS)` -o $(OBJDIR)/main.o

$(OBJDIR)/serial.o: src/serial.cpp src/serial.hpp
	$(CXX) $(PP) src/serial.cpp $(OPT) -c `$(WXFLAGS)` -o $(OBJDIR)/serial.o

$(OBJDIR)/status.o: src/status.cpp src/status.hpp
	$(CXX) $(PP) src/status.cpp $(OPT) -c `$(WXFLAGS)` -o $(OBJDIR)/status.o

 

komentarz 9 sierpnia 2022 przez j23 Mędrzec (195,220 p.)

Z tym ./configure --jakieśopcje to na Windowsie nic nie zrobi, jeśli nie zainstaluje MSYS2.

Wxy mają teraz możliwość kompilacji via CMake.

komentarz 10 sierpnia 2022 przez edwardkraweznik Dyskutant (9,930 p.)
w zasadzie to tak.

może sobie zainstalować MSYS a jeśli nie chce to może skorzystać z mingw32-make

a nawet z cmake (pełna dowolność) :D
komentarz 12 sierpnia 2022 przez Bilib Użytkownik (990 p.)

@edwardkraweznik, dziękuję za odpowiedź. Udało mi się znaleźć rozwiązanie tego problemu. Okazuje się, że było to o wiele łatwiejsze niż sądziłem. Dla każdego przykładowego programu znajduje się plik makefile.gcc. Wystarczy w wierszu poleceń przenieść się do katalogu, w którym znajduje się program i wpisać  mingw32-make -f makefile.gcc SHARED=1 BUILD=debug MONOLITHIC=0 (parametry SHARED, BUILD i MONOLITHIC najlepiej, żeby były takie same jak przy kompilacji plików w katalogu build/msw). W ten prosty sposób można stworzyć plik z rozszerzeniem .exe, przy czym warto zaznaczyć, że w przypadku parametru SHARED=1 należy do katalogu z plikiem dołączyć pliki .dll niezbędne do uruchomienia programu.

Podobne pytania

0 głosów
1 odpowiedź 561 wizyt
pytanie zadane 22 kwietnia 2016 w C i C++ przez T.Żurawski Początkujący (290 p.)
0 głosów
1 odpowiedź 487 wizyt
pytanie zadane 2 października 2022 w C i C++ przez Bilib Użytkownik (990 p.)

93,015 zapytań

141,978 odpowiedzi

321,272 komentarzy

62,358 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...