Компилиран 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 според инструкциите на Nicholas, след това го изградих отново, но това не проработи:

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