【问题标题】:How to force qmake not to create symbolic links to target when TEMPLATE=lib?当 TEMPLATE=lib 时,如何强制 qmake 不创建指向目标的符号链接?
【发布时间】:2009-07-02 12:22:18
【问题描述】:

我有一个像这样的(部分)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 将是实际的二进制文件,其余的是符号链接。

【问题讨论】:

    标签: linux qt qt4 qmake


    【解决方案1】:

    您可以将以下内容添加到您的专业文件中:

    CONFIG += unversioned_libname unversioned_soname
    

    我已经测试成功了。

    【讨论】:

      【解决方案2】:

      如果您使用无操作覆盖 QMAKE_LN_SHLIB 变量,它将不会建立符号链接。

      QMAKE_LN_SHLIB       = :
      

      【讨论】:

        【解决方案3】:

        我尝试了 swarfrat 发布的建议,它可以工作,但它会输出一个错误并显示一条(相当有用的)消息:

        Error 1 (ignored)
        

        所以,这是另一种删除符号链接而不产生任何错误的方法:

        unix: QMAKE_POST_LINK = find $$DESTDIR -maxdepth 1 -type l -exec rm -f {} \;
        

        关于这个 qmake 变量的更多信息可以在here找到。

        【讨论】:

          【解决方案4】:

          我研究了 qmake 源和 mkspecs,但似乎符号链接的生成是相当硬连线的。

          从我在源代码中找到的内容看来,如果将plugin 添加到CONFIG,则只会生成库,而不会生成符号链接。

          不过,我不能告诉你这样做是否有任何其他副作用。但它似乎是摆脱符号链接而无需编写构建后运行的脚本的唯一方法。

          【讨论】:

          • 出色的解决方法!正如您所说,它可能会在生成的二进制文件中添加更多链接标志。因为至少 qt 本身不允许混合实际插件,如果它们已经用不同的拱标志集编译,这些标志可能仍然在操作系统级别上工作。我需要检查一下..
          • 谢谢!我测试了将 CONFIG += 插件添加到我自己的一些项目中,但它似乎会导致奇怪的行为。我建议写一个脚本来清理。事实上,我使用“分发脚本”将所需的所有内容打包到目标存档/磁盘映像中,因此符号链接并不是真正的问题。
          【解决方案5】:

          如果你给我们一些关于它为什么重要的提示可能会有所帮助......

          至于如何,您可以考虑在构建过程结束时运行的脚本,该脚本会根据您的喜好重新排列。

          【讨论】:

          • 我想要这种行为的原因是由于一些软件打包的原因。我知道如何解决这些问题,所以原因实际上是无关紧要的。真正的原因是 qmake 本身太无证了,我问了这个问题,以了解是否可以在没有任何“黑客”的情况下重新配置这种行为。
          猜你喜欢
          • 2021-12-21
          • 1970-01-01
          • 1970-01-01
          • 2018-03-31
          • 1970-01-01
          • 2014-12-10
          • 1970-01-01
          • 1970-01-01
          • 2015-08-17
          相关资源
          最近更新 更多