我正在尝试将一个简单的makefile示例组合在一起:
FLAGS = -std=c++14
INC= -I/usr/local/include
LI = -L/usr/local/lib
LIB = /usr/local/lib/
LIBS = $(LIB)libboost_filesystem-mt.a \
$(LIB)libboost_filesystem-mt.dylib \
$(LIB)libboost_filesystem.a \
$(LIB)libboost_filesystem.dylib \
$(LIB)libboost_system-mt.a \
$(LIB)libboost_system-mt.dylib \
$(LIB)libboost_system.a \
$(LIB)libboost_system.dylib
default:
g++ main.cpp $(FLAGS) $(INC) $(LI) $(LIBS) -o assemble
./assemble
clean:
rm assemble
有没有办法不必多次提前$(LIB)?这是我现在可以让它工作的唯一方法(上面没有)。
答案 0 :(得分:1)
如果希望链接器搜索路径,则必须使用-l
标志添加库。因此,您不必将libboost_system-mt.a
添加到链接行,而是必须将-lboost_system-mt
添加到链接行。然后链接器将搜索-L
提供的路径。
我不确定dylib
的东西;我对OS X做的不多。
无论如何,如果你使用的是GNU make,你可以这样做:
LIBNAMES := filesystem-mt filesystem system-mt system
LIBS := $(foreach N,$(LIBNAMES),$(LIB)libboost_$N.a $(LIB)libboost_$N.dylib)