cpp.linkerFlags: {
var flags = base;
if (qbs.buildVariant == "release" && qbs.toolchain.contains("msvc")) {
flags.push("/DEBUG");
flags.push("/PDBALTPATH:pdb/%_PDB%");
}
return flags;
}
Это не совсем правильно, правильно cpp.debugInformation:true и cpp.separateDebugInformation:true
По сути "дебаг" это сборка с дебаг инфо и без оптимизаций:
property bool debugInformation: (buildVariant == "debug")
property string optimization: (buildVariant == "debug" ? "none" : "fast")
Отвечая на основной вопрос, MSVC модуль назначает отладочным символам тэги "debuginfo_app" (для бинарника), "debuginfo_dll" (для .dll) и "debuginfo_cl" (для статических либ). Ставить надо эти тэги, вот примеры из самой qbs:
Group {
fileTagsFilter: product.type
.concat(qbs.buildVariant === "debug" ? ["debuginfo_app"] : [])
qbs.install: true
qbs.installDir: targetInstallDir
qbs.installSourceBase: buildDirectory
}
Group {
fileTagsFilter: [isForDarwin ? "loadablemodule" : "dynamiclibrary"]
.concat(qbs.buildVariant === "debug"
? [isForDarwin ? "debuginfo_loadablemodule" : "debuginfo_dll"] : [])
qbs.install: true
qbs.installDir: targetInstallDir
qbs.installSourceBase: buildDirectory
}
Да, и стоит упомянуть очевидное - если вы руками передаете флаги компилятору то никто артефакты с указанными тэгами не создаст =)
if (product.cpp.debugInformation && product.cpp.separateDebugInformation) {
artifacts.push({
fileTags: ["debuginfo_app"],
filePath: ...
});
}