gpt4 book ai didi

c++ - 将预编译库复制到构建目录或将它们添加到 QBS 项目中的 PATH

转载 作者:太空狗 更新时间:2023-10-29 21:14:53 24 4
gpt4 key购买 nike

我有一个在我的 Qt 应用程序中使用的第三方预编译库 (.lib+.dll)。

在常规 (qmake) QtCreator 项目中,我的 .pro 文件中有以下几行:

LIBS += -L$$PWD/lib/release -ltag
INCLUDEPATH += include/taglib

在“项目”选项卡 ->“运行”->“将构建库搜索路径添加到 PATH”中还有一个选项,默认情况下是打开的。它确保将 LIBS 路径添加到系统 PATH,以便可以找到 dll。

但是,我在 QBS 中找不到等效项。我有以下 qbs 文件,然后通过 Depends 将其包含并添加到我的 CppApplication 文件中:

DynamicLibrary {
name: "taglib"

files: "lib/release/tag.dll"

Export {
Depends { name: "cpp" }
cpp.includePaths: [".","include/taglib"]
cpp.libraryPaths: ["lib/release"]
cpp.dynamicLibraries: "tag"
}

Group {
name: "taglib"
fileTagsFilter: ["dynamicLibrary"]
qbs.install: true
}

}

链接器通过,但应用程序在运行时找不到 DLL 并崩溃。是否可以在运行时将 cpp.libraryPaths 添加到系统 PATH?

另一种选择是将 DLL 文件复制到构建目录,但我不知道如何为 QBS 中的预编译库执行此操作。

编辑:我尝试使用记录在案的 cpp.systemRunPaths here但它不起作用。

最佳答案

我想出了如何将预构建的 .dll 文件复制到构建目录。

缺少的是 FileTagger 属性,因为 QBS 似乎不考虑 .dll 文件动态库。

FileTagger {
patterns: ["*.dll"]
fileTags: ["dynamicLibrary"]
}

问题仍然在于如何在运行时将 cpp.libraryPaths 添加到系统 PATH。我在core.qbs中找到了如下方法:

setupRunEnvironment: {
var env;
if (qbs.targetOS.contains('windows')) {
env = new ModUtils.EnvironmentVariable("PATH", qbs.pathListSeparator, true);
env.append(binPath);
env.set();
}
...
}

我不知道如何在我的 QBS 文件中修改或调用该方法。

关于c++ - 将预编译库复制到构建目录或将它们添加到 QBS 项目中的 PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39466967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com