MasterChief2
Cenjen
- Učlanjen(a)
- 01.03.2015
- Poruke
- 860
- Poena
- 115
Pozdrav svima. Ljudi koji prate Kodi temu verovatno vec znaju da vec neki vremenski period radim na XBMC4Xbox projektu. Za one koji ne znaju negde od februara krenuo sam da portujem feature sa novijih verzija Kodi programa na XBMC4Xbox. XBMC4Xbox je fork Kodi-ja namenjen Xbox konzolama prve generacije.
Trenutno sam zakucan (par dana vec) na dodavanju JSON biblioteke koja je neophodna za neke feature koje portujem. U pitanje je ova biblioteka, zove se YAJL. Ono sto ja zelim jeste da ovu biblioteku dodam u XBMC projekat kako bi mogao da bekportujem JSONVariantParser i JSONVariantWriter klase. E sad stvari se malo komlikuju jer je u pitanju Xbox koji pokrece osakacenu verziju Windows-a 2000 koji nema nikakvu podrsku za DLL/LIB fajlove. XBMC programeri su to nadomestili kreiranje DllLoader klase koja prosiruje kernel modul sa nedostajecim funkcijama tako da se DLL fajlovi biblioteka mogu ucitati i koristiti. Uspeo sam da stupim u kontakt sa prethodnim programerom koji je razvijao XBMC4Xbox u proslosti i on mi je dao sledece smernice:
1. Koja god biblioteka da je u pitanju, u 99% slucaja se bilduje sa MinGW kompajlerom. Dakle kao kada zelite da bildujete neku biblioteku za Windows 2K/XP, procedura je ovde sasvim ista
2. Bildovanje je najlakse odraditi koriscenjem CMake alata (sa kojim ja nikada nisam imao kontakta do sada)
3. Rezultat bildovanja je Dynamic Library (DLL), Static Library (LIB) ili kombinacija ova dva
4. Nakon toga potrebno je napisati DLL wrapper klasu koja nasledjuje DllLoader kalsu i definise sve exportovane metode iz DLL-a (njihova povratna vrednost, njihova deklaracija i njihovi ulazni parametri)
U teoriji nista specijalno kada je u pitanju neka jednostavnija biblioteka kao sto je JSON, medjutim u praksi malo je drugacije prica. Otprilike sam shvatio kako se pise DLL wrapper klasa, medjutim mene muci to sto nikako ne mogu da bildujem YAJL sa CMake i MinGW. Uvek dobijam neke greske. Koraci koja sam radio su sledeci:
Da li ima neko na forumu ko se razume u ovo, pre svega ko je koristio CMake za bildovanje projekata jer ja nisam nikada, tako da ne znam ni gde da trazim problem.. Napomenuo bih da sam probao i sa drugim opcijama za -G kao sto su koriscenje Visual Studio 2010 medjutim isti problem imam. Nije do lokalnog MinGW i CMake jer sam uspeo da generisem DLL za jsoncpp biblioteku.
Unapred hvala!
Trenutno sam zakucan (par dana vec) na dodavanju JSON biblioteke koja je neophodna za neke feature koje portujem. U pitanje je ova biblioteka, zove se YAJL. Ono sto ja zelim jeste da ovu biblioteku dodam u XBMC projekat kako bi mogao da bekportujem JSONVariantParser i JSONVariantWriter klase. E sad stvari se malo komlikuju jer je u pitanju Xbox koji pokrece osakacenu verziju Windows-a 2000 koji nema nikakvu podrsku za DLL/LIB fajlove. XBMC programeri su to nadomestili kreiranje DllLoader klase koja prosiruje kernel modul sa nedostajecim funkcijama tako da se DLL fajlovi biblioteka mogu ucitati i koristiti. Uspeo sam da stupim u kontakt sa prethodnim programerom koji je razvijao XBMC4Xbox u proslosti i on mi je dao sledece smernice:
1. Koja god biblioteka da je u pitanju, u 99% slucaja se bilduje sa MinGW kompajlerom. Dakle kao kada zelite da bildujete neku biblioteku za Windows 2K/XP, procedura je ovde sasvim ista
2. Bildovanje je najlakse odraditi koriscenjem CMake alata (sa kojim ja nikada nisam imao kontakta do sada)
3. Rezultat bildovanja je Dynamic Library (DLL), Static Library (LIB) ili kombinacija ova dva
4. Nakon toga potrebno je napisati DLL wrapper klasu koja nasledjuje DllLoader kalsu i definise sve exportovane metode iz DLL-a (njihova povratna vrednost, njihova deklaracija i njihovi ulazni parametri)
U teoriji nista specijalno kada je u pitanju neka jednostavnija biblioteka kao sto je JSON, medjutim u praksi malo je drugacije prica. Otprilike sam shvatio kako se pise DLL wrapper klasa, medjutim mene muci to sto nikako ne mogu da bildujem YAJL sa CMake i MinGW. Uvek dobijam neke greske. Koraci koja sam radio su sledeci:
- klonirao repozitorijum sa github-a
- kreirao build folder i prebacio se u njega sa:
-
Bash:
mkdir build && cd build
-
- i pokrenu komandu za kreranej fajlova potrebnih za build sa:
-
Bash:
cmake -G "MinGW Makefiles" ..
-
- I nakon toga dobijam ovu gresku:
C:\Documents and Settings\Nikola Antonic\Desktop\yajl-master\build>cmake -G "Min
GW Makefiles" ..
-- The C compiler identification is GNU 6.3.0
-- Check for working C compiler: C:/MinGW/bin/gcc.exe
-- Check for working C compiler: C:/MinGW/bin/gcc.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
Error: Target (for copy_if_different command) "Antonic/Desktop/yajl-master/build
/src/../yajl-2.1.1/include/yajl" is not a directory.
Error: Target (for copy_if_different command) "Antonic/Desktop/yajl-master/build
/src/../yajl-2.1.1/include/yajl" is not a directory.
Error: Target (for copy_if_different command) "Antonic/Desktop/yajl-master/build
/src/../yajl-2.1.1/include/yajl" is not a directory.
Error: Target (for copy_if_different command) "Antonic/Desktop/yajl-master/build
/src/../yajl-2.1.1/include/yajl" is not a directory.
CMake Warning (dev) at reformatter/CMakeLists.txt:38 (GET_TARGET_PROPERTY):
Policy CMP0026 is not set: Disallow use of the LOCATION target property.
Run "cmake --help-policy CMP0026" for policy details. Use the cmake_policy
command to set the policy and suppress this warning.
The LOCATION property should not be read from target "json_reformat". Use
the target name directly with add_custom_command, or use the generator
expression $<TARGET_FILE>, as appropriate.
This warning is for project developers. Use -Wno-dev to suppress it.
CMake Warning (dev) at verify/CMakeLists.txt:32 (GET_TARGET_PROPERTY):
Policy CMP0026 is not set: Disallow use of the LOCATION target property.
Run "cmake --help-policy CMP0026" for policy details. Use the cmake_policy
command to set the policy and suppress this warning.
The LOCATION property should not be read from target "json_verify". Use
the target name directly with add_custom_command, or use the generator
expression $<TARGET_FILE>, as appropriate.
This warning is for project developers. Use -Wno-dev to suppress it.
!! doxygen not found, not generating documentation
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Documents and Settings/Nikola Antonic/De
sktop/yajl-master/build
C:\Documents and Settings\Nikola Antonic\Desktop\yajl-master\build>
GW Makefiles" ..
-- The C compiler identification is GNU 6.3.0
-- Check for working C compiler: C:/MinGW/bin/gcc.exe
-- Check for working C compiler: C:/MinGW/bin/gcc.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
Error: Target (for copy_if_different command) "Antonic/Desktop/yajl-master/build
/src/../yajl-2.1.1/include/yajl" is not a directory.
Error: Target (for copy_if_different command) "Antonic/Desktop/yajl-master/build
/src/../yajl-2.1.1/include/yajl" is not a directory.
Error: Target (for copy_if_different command) "Antonic/Desktop/yajl-master/build
/src/../yajl-2.1.1/include/yajl" is not a directory.
Error: Target (for copy_if_different command) "Antonic/Desktop/yajl-master/build
/src/../yajl-2.1.1/include/yajl" is not a directory.
CMake Warning (dev) at reformatter/CMakeLists.txt:38 (GET_TARGET_PROPERTY):
Policy CMP0026 is not set: Disallow use of the LOCATION target property.
Run "cmake --help-policy CMP0026" for policy details. Use the cmake_policy
command to set the policy and suppress this warning.
The LOCATION property should not be read from target "json_reformat". Use
the target name directly with add_custom_command, or use the generator
expression $<TARGET_FILE>, as appropriate.
This warning is for project developers. Use -Wno-dev to suppress it.
CMake Warning (dev) at verify/CMakeLists.txt:32 (GET_TARGET_PROPERTY):
Policy CMP0026 is not set: Disallow use of the LOCATION target property.
Run "cmake --help-policy CMP0026" for policy details. Use the cmake_policy
command to set the policy and suppress this warning.
The LOCATION property should not be read from target "json_verify". Use
the target name directly with add_custom_command, or use the generator
expression $<TARGET_FILE>, as appropriate.
This warning is for project developers. Use -Wno-dev to suppress it.
!! doxygen not found, not generating documentation
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Documents and Settings/Nikola Antonic/De
sktop/yajl-master/build
C:\Documents and Settings\Nikola Antonic\Desktop\yajl-master\build>
Da li ima neko na forumu ko se razume u ovo, pre svega ko je koristio CMake za bildovanje projekata jer ja nisam nikada, tako da ne znam ni gde da trazim problem.. Napomenuo bih da sam probao i sa drugim opcijama za -G kao sto su koriscenje Visual Studio 2010 medjutim isti problem imam. Nije do lokalnog MinGW i CMake jer sam uspeo da generisem DLL za jsoncpp biblioteku.
Unapred hvala!