Boost & makefile

Boost & makefile

本文关键字:makefile Boost      更新时间:2023-10-16

我正在尝试在OS X上使用boost_math库(我没有使用Xcode),特别是包含错误函数的库

我自己下载并编译了boost_1_60_0(使用bootstrap.sh并按照说明进行操作。)我没有使用自制啤酒或其他东西,这可能就是为什么我的安装看起来如此糟糕的原因。

我想在我的Szab.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

我没有从g++得到链接错误,但是我得到了:

 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_6_0/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 -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?

您已经编译了Boost的单独编译的库,这很好,但您没有将头复制到工具链的include路径。事实上,大多数Boost都由仅限头的库组成,因此这可以说是安装Boost的更关键的一步。

互联网告诉我,你可以找到默认的标题搜索路径,在shell中使用以下命令:

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

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

找到它后,将分发版的boost子目录复制到它。

而且,是的,为你安装家庭酿造Boost会更容易…可能只有一个命令!