Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如果动态和静态版本都存在,如何告诉qmake使用静态库?_C++_Linker_Qmake - Fatal编程技术网

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来说尤其是一个问题。