Andreas Pakulat wrote:
On 11.12.08 11:38:38, Mike Jackson wrote:
Up a bit further I see the culprit:

  IF ( WIN32 AND Boost_USE_STATIC_LIBS )
    SET (Boost_LIB_PREFIX "lib")
  ENDIF ( WIN32 AND Boost_USE_STATIC_LIBS )

So I guess I need some logic in my own cmake files that says if Boost was NOT found, set Boost_USE_STATIC_LIBS to TRUE and try again, only if we are on Win32. I am sure I am missing something simple...

The problem is with mixed boost installations, i.e. you have shared and
static libs. If you have that there's no way to force cmake into finding
the static version other than changing the suffix variable as cmake will
always prefer shared over static libraries.

I'm not sure about the lib prefix above, it might be that this is only
really needed for mingw and not for VS.

Andreas


I think it is only needed for msvc. MinGW uses the more unix way (I think) of naming libraries. libFoo.so?

MSVC does Foo.dll + Foo.lib for dynamic libraries and libFoo.a for static libraries.

The logic for Mixed installations should be able to be designed.

say we have set (Boost_PREFER_STATIC_LIBS)

now, down in FindBoost.cmake we would need the following table in CMake code created:

          static  dyn  use_static
static      1      0       0
static      1      0       1
dyn         0      1       0
warning     0      1       1
dyn         1      1       0
static      1      1       1
error       0      0       0
error       0      0       1

Col 1: Which libs get set into the Boost_LIBRARIES variable
Col 2: Were Static Libraries Found
Col 3: Were Dynamic Libraries Found
Col 4: Was use_static set to true

There is going to be some more logic to this to special case the program_exec_monitor which is ALWAYS static and NEVER dynamic.

Just my thoughts....

Mike.



_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to