我有一个(部分)qmake项目文件,如下所示:
TEMPLATE=lib
TARGET=whatever
SOURCES=whatever.cpp
HEADERS=whatever.h
这将 - 至少默认 - 创建一个库和几个符号链接:
libwhatever.so -> libwhatever.so.0.1.0
libwhatever.so.0 -> libwhatever.so.0.1.0
libwhatever.so.0.1 -> libwhatever.so.0.1.0
libwhatever.so.0.1.0
libwhatever.so.0.1.0是实际的库二进制文件,其余的只是符号链接。
我想归档的是,根本没有创建符号链接或其他方式的顺序,以便libwhatever.so将是实际的二进制,其余是符号链接。
答案 0 :(得分:5)
如果使用no-op覆盖QMAKE_LN_SHLIB变量,则不会生成符号链接。
QMAKE_LN_SHLIB = :
答案 1 :(得分:2)
我试图通过swarfrat发布的建议并且它有效,但是它输出了一个错误(非常有用)的消息:
Error 1 (ignored)
因此,这是删除符号链接而不产生任何错误的另一种方法:
unix: QMAKE_POST_LINK = find $$DESTDIR -maxdepth 1 -type l -exec rm -f {} \;
有关此qmake变量的更多信息,请参见here。
答案 2 :(得分:1)
我研究了qmake源和mkspecs,但似乎符号链接的生成是相当硬连线的。
根据我在源代码中找到的内容,似乎如果将plugin
添加到CONFIG,则只会生成库,而不会生成符号链接。
但是,如果这样做有任何其他副作用,我无法告诉你。但它似乎是摆脱符号链接而不必编写构建后运行的脚本的唯一方法。
答案 3 :(得分:1)
您可以在下面添加到您的专业档案:
CONFIG += unversioned_libname unversioned_soname
我测试成功。
答案 4 :(得分:0)
如果你给我们一些关于它为何重要的暗示可能会有所帮助......
至于如何,您可以考虑一个脚本,它将根据您的喜好重新排列在构建过程结束时运行的内容。