Stephen Collyer wrote:
I have a top-level cmake list file with this in it:

OPTION (MDP_BUILD_SHARED_LIBS "Build Shared Libraries" ON)
SET (LIB_TYPE STATIC)
IF (MDP_BUILD_SHARED_LIBS)
  SET (LIB_TYPE SHARED)
  IF (WIN32)
    ADD_DEFINITIONS("-DMDP_BUILD_SHARED_LIBS")
  ENDIF (WIN32)
ENDIF (MDP_BUILD_SHARED_LIBS)

In a lower subdirectory, I have this to build a library:

ADD_LIBRARY(Test ${LIB_TYPE} Test.cpp)

the idea being that I can drive the generation of shared/static
libraries via the setting of the MDP_BUILD_SHARED_LIBS setting
which defaults to ON. However if I run cmake in an out-of-source
build from scratch and run a "make all", it seems that LIB_TYPE
is'nt being seen inside the lower subdirs - I've tested this by
adding "SET (LIB_TYPE SHARED)" explicitly to the library cmake
list file, then it build a shared library.

Can someone explain what's going on here. I'm beginning to
tear my hair out.

And for added bonus: is there a cmake log file generated anywhere
so I can see what it thinks it doing ? I can't find one anywhere.

If you want to change all the libraries in your project to shared, you can use the global variable BUILD_SHARED_LIBS, and use add_library without specifying shared or static.

$ cmake --help-command add_library
cmake version 2.4-patch 7
  ADD_LIBRARY
       Add a library to the project using the specified source files.

         ADD_LIBRARY(libname [SHARED | STATIC | MODULE]
.....  If no keywords appear as the
       second argument, the type defaults to the current value of
       BUILD_SHARED_LIBS.  If this variable is not set, the type
       defaults to STATIC.



Log files are found in CMakeFiles directory.

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

Reply via email to