[cmake-developers] Fwd: cmVisualStudio10TargetGenerator should not generate a rule for an ImportLibrary for executables

Daniel Pfeifer daniel at pfeifer-mail.de
Mon Nov 28 09:16:33 EST 2016


On Mon, Nov 28, 2016 at 2:41 PM, Lode Leroy <lode.leroy at gmail.com> wrote:

> Please consider the following patch for inclusion in cmake.
>
> The problem is that when a project contains a FOO.DLL and a FOO.EXE,
> the cmake generator tries to build FOO.LIB for both.
> The FOO.EXE does not need a FOO.LIB.
>
> $ diff -urp CMake-3.7.0-orig/ CMake-3.7.0
> Only in CMake-3.7.0: build
> diff -urp CMake-3.7.0-orig/Source/cmVisualStudio10TargetGenerator.cxx
> CMake-3.7.0/Source/cmVisualStudio10TargetGenerator.cxx
> --- CMake-3.7.0-orig/Source/cmVisualStudio10TargetGenerator.cxx
> 2016-11-11 15:24:18.000000000 +0100
> +++ CMake-3.7.0/Source/cmVisualStudio10TargetGenerator.cxx
> 2016-11-28 14:28:26.344898900 +0100
> @@ -2310,7 +2310,9 @@ bool cmVisualStudio10TargetGenerator::Co
>      imLib += "/";
>      imLib += targetNameImport;
>
> -    linkOptions.AddFlag("ImportLibrary", imLib.c_str());
> +    if (this->GeneratorTarget->GetType() != cmState::EXECUTABLE) {
> +        linkOptions.AddFlag("ImportLibrary", imLib.c_str());
> +    }
>      linkOptions.AddFlag("ProgramDataBaseFile", pdb.c_str());
>
>      // A Windows Runtime component uses internal .NET metadata,
> --
>
>
I am no windows expert, but I think the import library is required when you
want to link against the executable.
Please see https://cmake.org/cmake/help/v3.7/prop_tgt/ENABLE_EXPORTS.html
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake-developers/attachments/20161128/aaf807d2/attachment.html>


More information about the cmake-developers mailing list