我的代码可以使用以下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代码将已经编译到您的库中)。