mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-15 03:30:39 -06:00
Do not generate rules for .def generation where not supported
Our `cmake -E __create_def` helper used for `WINDOWS_EXPORT_ALL_SYMBOLS` and merging of multiple `.def` files is available only with CMake hosted on Windows. However, we may generate use of it on other platforms since commit v3.9.0-rc1~405^2 (Support WINDOWS_EXPORT_ALL_SYMBOLS with `.def` files, 2017-03-13) when multiple `.def` files are listed. This results in a build error because the tool doesn't exist. Fix our logic to avoid using the tool on non-Windows platforms. Instead silently ignore all but the first `.def` source as we did before. Issue: #17773
This commit is contained in:
@@ -1999,8 +1999,13 @@ void cmGeneratorTarget::ComputeModuleDefinitionInfo(
|
||||
info.WindowsExportAllSymbols =
|
||||
this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS") &&
|
||||
this->GetPropertyAsBool("WINDOWS_EXPORT_ALL_SYMBOLS");
|
||||
#if defined(_WIN32) && defined(CMAKE_BUILD_WITH_CMAKE)
|
||||
info.DefFileGenerated =
|
||||
info.WindowsExportAllSymbols || info.Sources.size() > 1;
|
||||
#else
|
||||
// Our __create_def helper is only available on Windows.
|
||||
info.DefFileGenerated = false;
|
||||
#endif
|
||||
if (info.DefFileGenerated) {
|
||||
info.DefFile = this->ObjectDirectory /* has slash */ + "exports.def";
|
||||
} else if (!info.Sources.empty()) {
|
||||
|
||||
Reference in New Issue
Block a user