我的代码可以使用以下makefile很好地编译

all: sample

sample: sample.o mylib.o
    g++ -Wall -O3 -ffast-math -funroll-loops -ansi -pedantic-errors -o sample -L/usr/lib sample.o mylib.o -lboost_serialization -lboost_iostreams -lz -I /usr/include/boost

sample.o: sample.cpp
    g++ -O3 -ffast-math -funroll-loops -ansi -pedantic-errors -I /usr/include/boost -c -o sample.o sample.cpp

mylib.o: mylib.cc mylib.h
    g++ -O3 -ffast-math -funroll-loops -ansi -pedantic-errors -I /usr/include/boost -c -o mylib.o mylib.cc

现在,mylib.cc和mylib.h包含许多我想分享的有用代码。但是,这取决于Boost,我的目标受众可能没有,或者不知道如何正确安装。

我是否可以通过mylib.h分发一个静态的mylib.o,使最终用户可以将其编译为自己的代码而无需安装Boost?

附加说明:mylib.h不包含任何BOOST头,但是mylib.cc确实包含boost头。

最佳答案

如果mylib.h包含Boost头文件,则这些文件将需要以某种形式出现在开发人员的系统上。至少,您必须将Boost的这一部分与您的代码一起交付。

但是,如果您可以创建一个较小的头文件,仅显示库的各个部分,而在Boost中不包含或引用任何内容,则可以。大多数Boost都是纯标题的(所需的Boost代码将已经编译到您的库中)。

10-07 19:16
查看更多