[CMake] Cygwin & MinGW static and dynamic libs won't coexist

Brandon J. Van Every bvanevery at gmail.com
Thu Aug 3 11:57:30 EDT 2006


Brad King wrote:
> Brandon J. Van Every wrote:
>
>> Cygwin expected nomenclature is:
>>
>> cygwhatever-xxx.dll - dynamic link lib where -xxx is a version number
>> libwhatever.dll.a - import lib
>> libwhatever.a - static lib
>>
>> MinGW expected nomenclature is:
>>
>> libwhatever.dll - dynamic link lib
>> libwhatever.dll.a - import lib
>> libwhatever.a - static lib
>>
>> I have a target "chicken-exe" which links against a dynamic library 
>> target "libchicken".
>> I have a target "chicken-static" which links against a static library 
>> target "libchicken-static".
>> The OUTPUT_NAME of chicken-exe, libchicken, and libchicken-static is 
>> "chicken".  Prefixes are added by CMake.  So for my problem, I expect 
>> there is a conflict regarding the root OUTPUT_NAME.
>>
>> On Cygwin and MinGW CMake 2.4.3, if I type "make chicken-exe", it 
>> builds fine.  It also produces libchicken.dll.a and deletes 
>> libchicken.a.  If I type "make chicken-static", it builds fine.  It 
>> also produces libchicken.a and deletes libchicken.dll.a.  If I type 
>> "make," chicken-exe builds fine and chicken-static dies with an error:
>
> In order to support projects that use the BUILD_SHARED_LIBS switch to 
> change between static and shared libraries, the clean rule used to 
> wipe out a target before it is linked removes source files with all 
> possible names for the library.  This is why one library is deleting 
> the other.
>
> I've just added a target property called CLEAN_DIRECT_OUTPUT that can 
> be set on the two library targets to prevent them from deleting each 
> other.  See the documentation in SET_TARGET_PROPERTIES in the CVS 
> version of CMake.  We'll include this in 2.4.4.

Thanks!  Meanwhile I'm using symlinks as a workaround in 2.4.3.


Cheers,
Brandon Van Every


More information about the CMake mailing list