[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