[CMake] implib option for linker on Win32

dohadwala, moiz dohadwala_moiz at emc.com
Thu Aug 4 14:34:04 EDT 2005


Sorry, that email went out before I was finished.

The problems with this is that I loose dependency checking. I could probably
add the .def file to the sources to force dependency checks, but that means
that 
If the def filename is changed, it has to be changed in at least 2
locations, which is less than ideal.

-Moiz

-----Original Message-----
From: dohadwala, moiz 
Sent: Thursday, August 04, 2005 11:31 AM
To: 'David Cole'; dohadwala, moiz
Cc: 'Brad King'; cmake at cmake.org
Subject: RE: [CMake] implib option for linker on Win32

David,

I have tried adding the the .def file to the sources but that did not add
the /implib Linker option to the link command in the make file.

Wbat does work is the following:

IF (${CMAKE_SYSTEM_NAME} EQUAL WINDOWS)
	SET ( ELM_LINK_FLAGS "/implib:elm.lib /def:filename.def" )
	SET_TARGET_PROPERTIES( elm PROPERTIES LINK_FLAGS "${ELM_LINK_FLAGS}"
) 
ENDIF (${CMAKE_SYSTEM_NAME} EQUAL WINDOWS)

-Moiz 

-----Original Message-----
From: David Cole [mailto:david.cole at kitware.com]
Sent: Thursday, August 04, 2005 5:22 AM
To: dohadwala, moiz
Cc: 'Brad King'; cmake at cmake.org
Subject: Re: [CMake] implib option for linker on Win32

Actually, I'm pretty sure that CMake supports both "options 2 and 3" 
from the Microsoft article you referenced.

Option 2 is "using a def file" - CMake supports this: simply add the .def
file as a source to your target (as you would a .c or .cxx/.cpp file).

Option 3 is passing "/EXPORT:entryname[, at ordinal[,NONAME]][,DATA]" to the
linker on the linker command line. This is Microsoft linker specific, of
course, but you can instruct CMake to use such a linker option by using a
construct like this:
SET(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS}
/EXPORT:MyExportedFunction")


Hope this helps,
David

dohadwala, moiz wrote:

>Brad,
>
>Actually, __declspec(dllexport) tags are not necessary to export 
>symbols, these can be specified in an external .def file.
>
>http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore
>/html
>/_core_.2f.implib.asp explains this.
>
>Cmake does not support options 2 or 3. I think it should and I believe 
>it shouldn't be to hard to do it. But it is easier for me to say ;-).
>
>-Moiz
>
>-----Original Message-----
>From: Brad King [mailto:brad.king at kitware.com]
>Sent: Monday, August 01, 2005 6:24 AM
>To: dohadwala, moiz
>Cc: cmake at cmake.org
>Subject: Re: [CMake] implib option for linker on Win32
>
>dohadwala, moiz wrote:
>  
>
>>I am trying to create a shared library on windows. The cmake project 
>>creates the dll, but it does not create the import library. What 
>>options/commands should I provide to get the import library to be
>>    
>>
>generated?
>
>You need to put __declspec(dllexport) tags in your source code to tell 
>the compiler/linker what symbols to export from the dll.  By default 
>nothing is exported.  This is not a CMake issue, it is just standard
Windows DLL stuff.
>
>-Brad
>_______________________________________________
>CMake mailing list
>CMake at cmake.org
>http://www.cmake.org/mailman/listinfo/cmake
>
>
>  
>


More information about the CMake mailing list