C++ 如果动态和静态版本都存在,如何告诉qmake使用静态库?
我在C++ 如果动态和静态版本都存在,如何告诉qmake使用静态库?,c++,linker,qmake,C++,Linker,Qmake,我在/usr/local/lib中安装了Boost的静态和动态版本,即libboost\u系统.dylib和libboost\u系统.a都存在 在我的qmake项目文件中,我向链接器添加了Boost库,如下所示:LIBS+=-lboost\u系统 我是否可以告诉qmake在不明确说明文件名的情况下更喜欢静态版本,这样我就可以减少qmake代码的数量,以便在所有平台上获得静态链接?我没有使用qmake,但是有一种方法可以通过将-static标志放在链接器上,使gcc链接到静态库。所有要静态链接的L
/usr/local/lib
中安装了Boost的静态和动态版本,即libboost\u系统.dylib
和libboost\u系统.a
都存在
在我的qmake项目文件中,我向链接器添加了Boost库,如下所示:LIBS+=-lboost\u系统
我是否可以告诉qmake在不明确说明文件名的情况下更喜欢静态版本,这样我就可以减少qmake代码的数量,以便在所有平台上获得静态链接?我没有使用
qmake
,但是有一种方法可以通过将-static
标志放在链接器上,使gcc链接到静态库。所有要静态链接的LIB都应该放在该标志之后
我搜索了
qmake
的文档,发现您可以通过更改变量qmake\u LFLAGS
来修改链接标志,或者可以直接将此标志添加到LIBS
这似乎不是真的可能,而指定库的绝对路径是一个更好的解决方案(即默认情况下CMake是如何做到的).我确实尝试过,但遇到了这里描述的相同问题:这似乎意味着,如果不简单地指定完整文件名,就无法选择静态库。我会让它打开一段时间,以便有人可以确认这两种方式。我发现了:,所以请尝试LIBS+=-static-lsomelib--Wl,-Bdynamic
?如果我正确理解您的问题,您可以在这里找到答案,但这不能很好地处理静态依赖关系。例如,Boost可能依赖于zlib,但它不是自动拉入的。这对于mingw来说尤其是一个问题。