Скомпилировал FreeImage из исходников. #include FreeImage.h не найден

Я скомпилировал FreeImage 3.10.0 из исходного кода в /lib/FreeImage для Mac OS X 10.6.

Я вижу, что после компиляции эти файлы были скопированы:

/usr/local/lib/libfreeimage-3.10.0.dylib
/usr/local/lib/libfreeimage.a
/usr/local/include/FreeImage.h

CMake не может найти FreeImage, но я даже не могу

#include <FreeImage.h>  // not found

Я предполагаю, что мне нужно добавить FreeImage.h в путь среды Mac OS X, за исключением того, что я не знаю, какой путь является правильным, поскольку есть несколько разных файлов, в которых хранятся переменные пути среды.

Что мне нужно сделать, чтобы заголовок FreeImage мог быть найден моим приложением C++ или CMake?

Вот первая часть моего Makefile.osx, это помогает:

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

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

# General configuration variables:
CC_PPC = gcc-4.0
CC_I386 = gcc-4.0
CPP_PPC = g++-4.0
CPP_I386 = g++-4.0
COMPILERFLAGS = -Os -fexceptions -fvisibility=hidden
COMPILERFLAGS_PPC = -arch ppc
COMPILERFLAGS_I386 = -arch i386
COMPILERPPFLAGS = -Wno-ctor-dtor-privacy
INCLUDE += 
INCLUDE_PPC = -isysroot /Developer/SDKs/MacOSX10.6.sdk
INCLUDE_I386 = -isysroot /Developer/SDKs/MacOSX10.6.sdk
CFLAGS_PPC = $(COMPILERFLAGS) $(COMPILERFLAGS_PPC) $(INCLUDE) $(INCLUDE_PPC)
CFLAGS_I386 = $(COMPILERFLAGS) $(COMPILERFLAGS_I386) $(INCLUDE) $(INCLUDE_I386)
CPPFLAGS_PPC = $(COMPILERPPFLAGS) $(CFLAGS_PPC)
CPPFLAGS_I386 = $(COMPILERPPFLAGS) $(CFLAGS_I386)
LIBRARIES_PPC = -Wl,-syslibroot /Developer/SDKs/MacOSX10.6.sdk
LIBRARIES_I386 = -Wl,-syslibroot /Developer/SDKs/MacOSX10.6.sdk
LIBTOOL = libtool
LIPO = lipo

Обновление: я добавил эти строки в свой Makefile в соответствии с инструкциями Николаса, затем пересобрал, но это не сработало:

CFLAGS = -I/usr/local/include
LDFLAGS = -L/usr/local/lib

person Brock Woolf    schedule 12.12.2009    source источник


Ответы (3)


Строка 'INCLUDE +=' выглядит как атака:

INCLUDE += -I/usr/local/include

Если библиотека тоже отсутствует, вам нужно будет найти другую строку, чтобы добавить в нее «-L/usr/include/lib».

person Jonathan Leffler    schedule 14.12.2009

Вы должны добавить -I/usr/local/include в CFLAGS и -L/usr/local/lib в LDFLAGS при компиляции.

person Community    schedule 12.12.2009
comment
Должен ли быть пробел между -I и путем в: -I/usr/local/include - person Brock Woolf; 12.12.2009

Компиляция с помощью gcc -c file.c -o file.o -I /usr/local/include должна скомпилировать ваш файл, ссылающийся на FreeImage.h.

Однако при использовании isysroot все становится связанным с системным корнем (т. е. ваша ссылка на /usr/local/include на самом деле isysroot/usr/local/include). "gcc -v" покажет все, что происходит, упростив задачу:

tmp diciu$ gcc -v -isysroot /Developer/SDKs/MacOSX10.6.sdk test.c
[..]
ignoring nonexistent directory "/Developer/SDKs/MacOSX10.6.sdk/usr/local/include"
person diciu    schedule 12.12.2009