Michael Biebl wrote:
On 5/15/06, Xavier Delannoy <[EMAIL PROTECTED]> wrote:
it's possible with CMake greater to 2.3.4. I used two diferent
destination directories for the static and shared libs.
Thanks Xavier for this detailed (and lengthy) instructions. But they
are way too complicated and cumbersome imho.
Under Unix/Linux it's not that uncommon that you want to create both,
a shared and dynamic library (of the same name of course). Why not add
a new keyword to add_library like "BOTH" so it automatically creates
both types. On platforms like windows, where there are potential
problems as Brad outlined, you could output a warning or create a
workaround like two different output folders automatically.
The interface to enable it is not an issue. Creation of two targets
with one list of sources could be packaged up in a macro. The problem
is supporting Windows where libraries almost never use the same name for
static and shared versions. Somehow you have to always use two directories.
For projects that don't care about windows using two libraries with the
same name in the same directory is not a problem if one is shared and
one is static. Currently the only thing preventing this is the code
that removes all possible names (shared or static) for a target before
linking it. This causes the targets in the same directory to clobber
each other. We can add a target property to disable this. Then your
code could look like this:
ADD_LIBRARY(foo-shared SHARED foo1.cxx)
SET_TARGET_PROPERTIES(foo-shared PROPERTIES
OUTPUT_NAME foo CLEAN_DIRECT_OUTPUT 1)
ADD_LIBRARY(foo-static STATIC foo1.cxx)
SET_TARGET_PROPERTIES(foo-static PROPERTIES
OUTPUT_NAME foo CLEAN_DIRECT_OUTPUT 1)
and could easily be package in a macro. Note that the
CLEAN_DIRECT_OUTPUT property does not yet exist and I made it up for
this example. It tells CMake to not remove the static copy of a library
when linking the shared one and vice versa (currently this is done to
avoid problems when a project switches between shared and static
builds). If you have a better name in mind please suggest it.
Comments?
-Brad
_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake