C++ GNU Make:自定义Makefile中的库搜索路径
目前,要在我的项目repo中包含一个自定义静态库,我需要告诉编译器库的完整路径,如C++ GNU Make:自定义Makefile中的库搜索路径,c++,c,makefile,static-libraries,gnu-make,C++,C,Makefile,Static Libraries,Gnu Make,目前,要在我的项目repo中包含一个自定义静态库,我需要告诉编译器库的完整路径,如 $(CXX) $(CXXFLAGS) -o $@ $^ ../lib/libnt.a $(LDFLAGS) 但我实际上想添加一个自定义搜索路径,这样我就可以编写 $(CXX) $(CXXFLAGS) -o $@ $^ -lnt $(LDFLAGS) 相反。可能吗?我试图指定PATH环境变量,但这不起作用。PATH环境变量是用于shell的,我不明白为什么您甚至认为它会起作用。请改用-L链接器标志: LDFLA
$(CXX) $(CXXFLAGS) -o $@ $^ ../lib/libnt.a $(LDFLAGS)
但我实际上想添加一个自定义搜索路径,这样我就可以编写
$(CXX) $(CXXFLAGS) -o $@ $^ -lnt $(LDFLAGS)
相反。可能吗?我试图指定
PATH
环境变量,但这不起作用。PATH环境变量是用于shell的,我不明白为什么您甚至认为它会起作用。请改用-L
链接器标志:
LDFLAGS = ... stuff you put here ... -L/search/path/for/custom/libs
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This part
您可以使用一个简单的make-var定义
LIBLDIR = ../lib/
#
#
#
$(CXX) $(CXXFLAGS) -o $@ $^ -L$(LIBLDIR) -lnt $(LDFLAGS)
这并不是说
路径
是用于shell的。这是因为PATH
用于查找可作为命令运行的可执行文件,这些命令可以来自shell或其他可执行文件或脚本(Python、Perl等。在尝试运行程序时,所有这些文件都使用PATH
)。但是,PATH
从不用于查找非程序的内容,其中包括库。我的坏消息。我应该仔细阅读链接器选项文档。@KevinSayHi不客气。是的,谷歌对“使用GCC”等有点了解。这肯定会有帮助(我就是这样学会使用它的)。最好的是大多数标志也适用于clang
。请使用-L
(注意大写)指定用于搜索库的目录。您可以给-L
多次搜索多个目录。他们将按给定的顺序被搜查。