【问题标题】:Qt - Don't append major version number to the end of executable/library nameQt - 不要将主要版本号附加到可执行文件/库名称的末尾
【发布时间】:2013-01-31 22:34:03
【问题描述】:

如何阻止 Qt 将我的 DLL 重命名为 MyDLLName{MAJOR_VERSION_NUM}.dll

这只发生在我在项目文件中设置VERSION 时,但我也想设置版本。例如,如果我有:

VERSION = 1.2.3.4

我的库被命名为MyDll,它将在调试文件夹中创建我的DLL 为MyDLL1.dll。如果我去掉版本号,它会保留我想要的名称 (MyDLL.dll)。

谢谢。

【问题讨论】:

标签: qt dll version filenames naming


【解决方案1】:

使用这个:

CONFIG += skip_target_version_ext

【讨论】:

    【解决方案2】:

    请参阅此答案(关于 SO)以了解其存在的原因:Why library name gets an additional 0 in its name?

    您可以“不设置”版本以将其从生成的名称中删除,但您确定要这样做吗? (它的存在是为了避免 DLL Hell。)

    “正确答案”是LIB 模板正在添加版本号。

    另外,请注意:

    • VERSION 用于定义VER_MAJVER_MIN
    • msvc_nmake 生成器将/VERSION:major.minor 添加到链接标志如果!empty
    • msvc_vcproj generate 将/VERSION:major.minor 添加到链接标志和MSVCPROJ_VERSION if !empty

    您可以自己显式设置,或“取消设置”其中任何一个。

    您可以使用TARGET_EXT 变量从目标名称中显式删除版本号,例如,请参阅:http://qt-project.org/faq/answer/how_can_i_add_version_information_to_my_application

    如果您想创建自己的插件来决定如何生成目标名称(没有版本号),您可以按照此答案(在 SO)中的描述制作自己的插件:How to avoid having version numbers in .so file name

    【讨论】:

    • 在使用 minGW + Cygwin 时删除它很有用,因为在 windows 中无法生成从 .so.1.2.3 到 .so 的文件链接。
    • 给每个版本一个新的文件名是不切实际的。文件名在安装程序构建器中显式引用,并在由 EXE 调用时。每次换源太麻烦了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    相关资源
    最近更新 更多