2012-02-09 15 views
5

Mam więc tę aplikację SFML 1.6, która działa dobrze na Mac OS X Lion. Obecnie mam to, że frameworki SFML są w/Library/Frameworks i działa dobrze, jednak do instalacji na innych komputerach wymaga uprawnień administratora. Więc chcę zrobić jedną z następujących czynności:SFML 1.6 bez uprawnień administratora

  1. być w stanie zainstalować biblioteki w/Użytkownik/idk/Library/Frameworks lub podobny

  2. pakiecie bibliotek i aplikacji w obrazie dysku Mac i mieć go odwołać bibliotek stamtąd

  3. statycznie łączyć biblioteki

teraz, ponieważ program jest zbudowany przy użyciu terminala w W przypadku plików Makefile wolałbym, aby rozwiązanie znajdowało się w Terminalu niż w XCode, ale jeśli jest to absolutnie konieczne, to domyślam się, że mogłem jakoś zaimportować projekt do XCode.

Czy ktoś może wyjaśnić (dokładnie), jak wykonać którąś z powyższych trzech zasad, w zależności od tego, która z tych czynności jest najłatwiejsza?

Przy okazji używam LLVM GCC 4.2 dostarczanego z XCode 4.1 do kompilacji.

EDIT:

Jak ktoś próbuje o dwa pozostałe, oprócz statycznie łączenie?

Odpowiedz

3

Rozwiązałem to tak ... trochę marnotrawstwa punktów nagrody ... SUKCJE DLA CIEBIE! : P

zrobiłem coś bardzo prostego i był zaskoczony nikt inny nie zaproponował go:

użyłem install_name_tool do zmiany nazwy i zależności dynamicznych bibliotek SFML tak, że mogą one być umieszczone w tym samym katalogu, co plik wykonywalny lub specjalny folder, ale jest to względne w stosunku do katalogu wykonywalnego. Nie wymaga więc żadnych uprawnień administratora, a ja łatwo pakowałem to wszystko do pakietu aplikacji.

+1

Wzniesiono za dobrą odpowiedź, ale wstydźcie się za pozbawienie ludzi ich nagród! :) – Danra

+0

Zawsze dawałbym nagrodę, gdyby ktoś dał dobre i działające rozwiązanie. :RE – slartibartfast

2

Powinieneś prawdopodobnie statycznie linkować do SFML. Aby to zrobić, będziesz musiał skompilować SFML jako bibliotekę statyczną. Najłatwiejszym sposobem jest zmodyfikowanie projektu Xcode dostarczanego z SFML ("SFML with Intel 64 bits.xcodeproj"). Należy zmienić typ bibliotek Mach-O na Static Library.

Przesłałem zmodyfikowaną wersję SFML with Intel 64 bits.xcodeproj, której używam, możesz ją uzyskać here. (Ten projekt wymaga GCC4.2, a więc działa tylko z Xcode 3).

Statyczne połączenie z SFML jest bardzo podobne do dynamicznego łączenia z nim, pamiętaj tylko, że musisz również połączyć się z Cocoa.framework, OpenGL.framework i CoreFoundation.framework.

Należy również pamiętać, że jeśli chcesz wdrożyć system OSX 10.4 lub wcześniejszy, powinieneś połączyć się statycznie z libfreetype. Model libfreetype dostarczany z systemem operacyjnym znajduje się w innym miejscu w wersji 10.4 i wcześniejszych, co powoduje problemy, gdy jest on dynamicznie połączony.

+0

XCode nie wydaje się teraz podobać SFML ... to błędy podczas kompilacji. Czy jest jakiś inny sposób na zrobienie tego? Ponieważ wydaje się, że SFML 1.6 ma problemy z XCode na Macu 10.7 ... – slartibartfast

+0

@myrkos: Jakie problemy? Proszę być bardziej konkretnym. – Mankarse

+0

W porządku. Zasadniczo w "Custom Shell Script" jest napisane "cp: 3/build/xcode /../../ include/SFML /: Brak takiego pliku lub katalogu". To jest błąd. – slartibartfast