2013-09-29 3 views

ответ

6

makefile.osx of FreeImage 3.1.5.4 устарел для версий OS X> 10.6. См. Нижнюю часть этого сообщения для модифицированной версии. В дополнение к решению вопроса описано в FreeImage issue tracker вам необходимо добавить строку в Source/OpenEXR/IlmImf/ImfAutoArray.h:

#include <cstring> 

Makefile для OS X 10.8:

# -*- Makefile -*- 
# Mac OSX makefile for FreeImage 

# This file can be generated by ./gensrclist.sh 
include Makefile.srcs 

# General configuration variables: 
CC_X86_64 = gcc -4.2 
CPP_X86_64 = g++ -4.2 
COMPILERFLAGS = -Os -fexceptions -fvisibility=hidden -DNO_LCMS 
COMPILERFLAGS_X86_64 = -arch x86_64 
COMPILERPPFLAGS = -Wno-ctor-dtor-privacy 
INCLUDE += 
INCLUDE_X86_64 = -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk 
CFLAGS_X86_64 = $(COMPILERFLAGS) $(COMPILERFLAGS_X86_64) $(INCLUDE) $(INCLUDE_X86_64) 
CPPFLAGS_X86_64 = $(COMPILERPPFLAGS) $(CFLAGS_X86_64) 
LIBRARIES_X86_64 = -Wl,-syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk 
LIBTOOL = libtool 
LIPO = lipo 

TARGET = freeimage 
STATICLIB = lib$(TARGET).a 
SHAREDLIB = lib$(TARGET)-$(VER_MAJOR).$(VER_MINOR).dylib 
LIBNAME = lib$(TARGET).$(VER_MAJOR).dylib 
HEADER = Source/FreeImage.h 

.SUFFIXES: .o-x86_64 
MODULES_X86_64 = $(SRCS:.c=.o-x86_64) 
MODULES_X86_64 := $(MODULES_X86_64:.cpp=.o-x86_64) 

PREFIX = /usr/local 
INSTALLDIR = $(PREFIX)/lib 
INCDIR = $(PREFIX)/include 

default: all 

all: dist 

dist: FreeImage 
    cp *.a Dist 
    cp *.dylib Dist 
    cp Source/FreeImage.h Dist 

FreeImage: $(STATICLIB) $(SHAREDLIB) 

$(STATICLIB): $(STATICLIB)-x86_64 
    $(LIPO) -create $(STATICLIB)-x86_64 -output $(STATICLIB) 

$(STATICLIB)-x86_64: $(MODULES_X86_64) 
    $(LIBTOOL) -arch_only x86_64 -o [email protected] $(MODULES_X86_64) 

$(SHAREDLIB): $(SHAREDLIB)-x86_64 
    $(LIPO) -create $(SHAREDLIB)-x86_64 -output $(SHAREDLIB) 

$(SHAREDLIB)-x86_64: $(MODULES_X86_64) 
    $(CPP_X86_64) -arch x86_64 -dynamiclib $(LIBRARIES_X86_64) -o [email protected] $(MODULES_X86_64) 

.c.o-x86_64: 
    $(CC_X86_64) $(CFLAGS_X86_64) -c $< -o [email protected] 

.cpp.o-x86_64: 
    $(CPP_X86_64) $(CPPFLAGS_X86_64) -c $< -o [email protected] 

install: 
    install -d -m 755 -o root -g wheel $(INCDIR) $(INSTALLDIR) 
    install -m 644 -o root -g wheel $(HEADER) $(INCDIR) 
    install -m 644 -o root -g wheel $(SHAREDLIB) $(STATICLIB) $(INSTALLDIR) 
    ranlib -sf $(INSTALLDIR)/$(STATICLIB) 
    ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(LIBNAME) 

clean: 
    rm -f core Dist/*.* u2dtmp* $(MODULES_X86_64) $(STATICLIB) $(SHAREDLIB) $(SHAREDLIB)-x86_64 
1

В дополнение к ответу на Кристофа:

GCC 4.2, который упоминается в ответе, в значительной степени устарел и FreeImage компилируется с использованием Clang довольно хорошо. Поэтому я бы рекомендовал переключиться на инструментальную цепочку Clang.

+1

Вы правы! Но я думаю, что это было бы лучше, чем комментарий. – Christoph

Смежные вопросы