[CMake] Cannot prevent import library from being created with VS generator

Jason Heeris jason.heeris at gmail.com
Mon Jul 9 18:49:34 EDT 2018


I'm using CMake 3.12-rc1 on Windows 10. I have the following
`CMakeLists.txt`:

cmake_minimum_required(VERSION 3.8)
project(cmake_test)
unset(CMAKE_IMPORT_LIBRARY_SUFFIX)
add_library(main MODULE "main.c")

The generator is Visual Studio 15 2017.

I would like to suppress the "/IMPLIB" argument created for the "main"
library. In my real project, I have static and shared libraries named the
same. This works fine, because they have different extensions (lib vs dll),
but a problem arises when the linker tries to create an import library for
"something.dll" named "something.lib", while also trying to link against a
static library named "something.lib".

The import library is not needed though; in CMake terminology the DLL is a
"module" ie. loaded via DllOpen(). The documentation suggested that calling
"add_library()" with "MODULE" was what I needed here. Unfortunately the
resulting VS project still contains an import library flag for the linker.

A Stackoverflow answer[1] suggested unsetting "CMAKE_IMPORT_LIBRARY_SUFFIX"
because the source indicates[2] this will stop the flag from appearing. But
all this seems to do is drop the filename from the generated project; it
still contains this now-incorrect flag that references a directory instead
of a full path:

<ImportLibrary>C:/Users/heerij/Code/cmake-ex-2/build/Debug/</ImportLibrary>

How do I prevent the import library creation?

- Jason

  [1]
https://stackoverflow.com/questions/34575066/how-to-prevent-cmake-from-issuing-implib
  [2]
https://gitlab.kitware.com/cmake/cmake/blob/master/Source/cmComputeLinkInformation.cxx#L271
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake/attachments/20180710/9c288ff9/attachment.html>


More information about the CMake mailing list