C++ Boost&;生成文件

C++ Boost&;生成文件,c++,boost,makefile,g++,clang++,C++,Boost,Makefile,G++,Clang++,我尝试在OSX上使用boost_math libs(我没有使用Xcode),特别是包含 我自己下载并编译了boost_1_60_0(使用bootstrap.sh并遵循说明)。我没有使用家用brew或其他东西,这可能就是我的安装看起来如此糟糕的原因 我试图在Szabo.hpp中包含以下内容: #include <boost/math/special_functions/erf.hpp> 我没有从g++得到链接错误,但是我得到: In file included from Szabo

我尝试在OSX上使用boost_math libs(我没有使用Xcode),特别是包含

我自己下载并编译了boost_1_60_0(使用bootstrap.sh并遵循说明)。我没有使用家用brew或其他东西,这可能就是我的安装看起来如此糟糕的原因

我试图在Szabo.hpp中包含以下内容:

#include <boost/math/special_functions/erf.hpp>
我没有从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.
I_FLAGS=-I/Users/development/Documents/boost_1_60_0/ 所有对象=main.o Gaussienne.o Grill.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_标志的方法?

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

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

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

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


而且,是的,这会容易得多…可能是一个命令

您需要告诉编译器在哪里找到该文件路径。你需要合适的
-I
参数(就像你已经有了
-L
参数一样)。是的,我也这么认为,但我看到很多boost用户在boost文件夹的根目录下都有一个文件夹include,奇怪的是我没有,所以我真的不知道应该在-i中放什么。我试过使用
-i/Documents/boost\u 1\u 60\u 0/
-i/Documents/boost\u 1\u 60\u 0/boost
文件夹,但是如果你的include树的根目录中没有一个
boost
文件夹,这可能有点奇怪(但可能没有)然后你不能将它包含在你使用的路径中,或者你创建了一个目录(作为一个符号链接,如果没有其他东西的话),这样你就可以使用它。我有正确的boost 1#60体系结构,我刚刚在文档中检查过。我的标题在boost_1_60_0/boost/math等中。。但是编译器似乎不理解在那里搜索,即使使用-I行。您将什么作为
-I
参数传递给编译器?凭什么命令?
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
gcc -x c++ -v -E /dev/null