2016-04-13 2 views
0

я пытаюсь использовать boost_math LIBS на OS X (я не использую Xcode), в частности, одна из которых error functionподталкивания & Makefile

Я скачал и составил boost_1_60_0 себя (с помощью bootstrap.sh и после инструкции.) Я не использовал домашнее пиво или что-то еще, что может быть связано с тем, что моя установка кажется такой напуганной.

Что я пытаюсь включить в моем Szabo.hpp это:

#include <boost/math/special_functions/erf.hpp> 

Мой Makefile выглядит следующим образом:

LIB_FLAGS = -L/Documents/boost_1_60_0/stage/lib -lboost_math 
ALL_OBJECTS = main.o Gaussienne.o Grille.o Szabo.o 

all: $(ALL_OBJECTS) 
    g++ -o hydrogene $(ALL_OBJECTS) $(LIB_FLAGS) 

Gaussienne.o: Gaussienne.cpp 
    g++ -o Gaussienne.o -c Gaussienne.cpp -W -Wall -ansi 

main.o: Gaussienne.hpp Grille.hpp main.cpp Szabo.o 
    g++ -o main.o -c main.cpp -W -Wall -ansi 

Grille.o: Grille.cpp Gaussienne.cpp 
    g++ -o Grille.o -c Grille.cpp -W -Wall -ansi 

Szabo.o: Szabo.cpp Gaussienne.cpp 
    g++ -o Szabo.o -c Szabo.cpp -W -Wall -ansi 

clean: 
    rm -rf *.o 

mrproper: clean 
    rm -rf hydrogene 

я не получаю связывающую ошибку от г ++, однако я получил :

In file included from Szabo.cpp:12: 
./Szabo.hpp:21:10: fatal error: 'boost/math/special_functions/erf.hpp' file not found 
#include <boost/math/special_functions/erf.hpp> 
     ^
1 error generated. 

Можете ли вы предоставить помощь по устранению этого? Заранее спасибо

ИТАК, видимо, любит это, он работает:

LIB_FLAGS = -L/Users/devolution/Documents/boost_1_60_0/stage/lib -lboost_math_tr1 

I_FLAGS = -I/Пользователи/передачи полномочий/Документы/boost_1_60_0/ ALL_OBJECTS = main.o Gaussienne.o Grille.o Сабо. o

all: $(ALL_OBJECTS) 
    g++ -o hydrogene $(ALL_OBJECTS) $(LIB_FLAGS) 

Gaussienne.o: Gaussienne.cpp 
    g++ -o Gaussienne.o -c Gaussienne.cpp -ansi ${I_FLAGS} 

main.o: Gaussienne.hpp Grille.hpp main.cpp Szabo.o 
    g++ -o main.o -c main.cpp -ansi ${I_FLAGS} 

Grille.o: Grille.cpp Gaussienne.cpp 
    g++ -o Grille.o -c Grille.cpp -ansi ${I_FLAGS} 

Szabo.o: Szabo.cpp Gaussienne.cpp 
    g++ -o Szabo.o -c Szabo.cpp -ansi ${I_FLAGS} 

.PHONY: clean mrproper 
clean: 
    rm -rf *.o 

mrproper: clean 
    rm -rf hydrogene 

Есть ли способ пройти I_FLAGS?

+0

Вы должны сообщить своему компилятору, где найти этот путь к файлу. Вам нужен соответствующий аргумент '-I' (например, у вас уже есть аргумент' -L'). –

+0

Да, я так и думал, но я вижу, что у многих пользователей ускорения есть папка, содержащаяся в корневой папке boost, странная вещь - я этого не делаю, поэтому я действительно не знаю, что положить внутри -I. Я попытался с помощью '-I/Documents/boost_1_60_0 /' и '-I/Documents/boost_1_60_0/boost', но он не работает – Devolution

+0

Если у вас нет папки' boost' в корне вашего дерева include, это немного (возможно, нет), а затем вы не можете включить его в путь, который вы используете с помощью '# include', или вы создаете каталог (в качестве символической ссылки, если не более того), чтобы вы могли его использовать. –

ответ

0

Вы скомпилировали библиотеки, скомпилированные отдельно от Boost, что отлично, но вы не скопировали заголовки в путь include вашей привязки. Действительно, большая часть Boost состоит из только заголовков, поэтому это, возможно, более важный этап установки Boost.

Интернет говорит, что вы можете быть в состоянии найти заголовок по умолчанию путь поиска с помощью следующей команды в оболочке на:

gcc -x c++ -v -E /dev/null 

(https://stackoverflow.com/a/19852298/560648)

Когда вы найдете его, скопировать дистрибутив, boost подкаталог.

И, да, having home-brew install Boost for you было бы much easy & hellip; возможно, одна команда!

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