aboutsummaryrefslogtreecommitdiffstats
path: root/share/qbs/modules/cpp/msvc.js
diff options
context:
space:
mode:
Diffstat (limited to 'share/qbs/modules/cpp/msvc.js')
-rw-r--r--share/qbs/modules/cpp/msvc.js9
1 files changed, 9 insertions, 0 deletions
diff --git a/share/qbs/modules/cpp/msvc.js b/share/qbs/modules/cpp/msvc.js
index c06286cbe..8611ebe50 100644
--- a/share/qbs/modules/cpp/msvc.js
+++ b/share/qbs/modules/cpp/msvc.js
@@ -391,6 +391,10 @@ function prepareLinker(project, product, inputs, outputs, input, output) {
function (a) {
return a.filePath;
});
+ var moduleDefinitionInputs = Array.prototype.map.call(inputs["def"],
+ function (a) {
+ return a.filePath;
+ });
var generateManifestFiles = !linkDLL && product.cpp.generateManifestFile;
var useClangCl = product.qbs.toolchain.contains("clang-cl");
var canEmbedManifest = useClangCl || product.cpp.compilerVersionMajor >= 17 // VS 2012
@@ -502,6 +506,11 @@ function prepareLinker(project, product, inputs, outputs, input, output) {
}
}
+ if (moduleDefinitionInputs.length === 1)
+ linkerArgs.push("/DEF:" + moduleDefinitionInputs[0]);
+ else if (moduleDefinitionInputs.length > 1)
+ throw new Error("Only one '.def' file can be specified for linking");
+
var wholeArchiveSupported = linkerSupportsWholeArchive(product);
var wholeArchiveRequested = false;
var libDeps = collectLibraryDependencies(product);