[CMake] Sourcefiles compile but no library built

Marc de Kamps M.deKamps at leeds.ac.uk
Mon Aug 22 08:33:49 EDT 2011


Hi,

Below you find a CMakeLists.txt that used to do what I needed: compile the source files and create a library. I recently changed from 2.6 to 2.8. The source files are being compiled, but the resulting so is nowhere to be found. There are no error messages:

I have checked that the environment variables are all defined. This file lives in a directory called UtilLib, which resides in libs. libs has its own CMakeList.txt and uses ADD_SUBDIRECTORY to add the UtilLib directory. The CMakeList.txt of the main project and libs are added below.

To my understanding, the fact that the source files are compiled indicates that CMake understands it needs to build this library, but it is nowhere to be found. Later in the process, another library which depends on this one cannot be built because make complains there is no rule to build libUtil.so.

Is there an obvious mistake which would brake working files when moving from 2.6 to 2.8? This problem occurs under fedora linux.

Is there a way to get more information on why the library is not built?

Thanks,
Marc


--------------------------------------------------------------------------
project( ${MIIND_LIBRARY_PREFIX}util )

if( NOT WIN32 )
  SET(LIB_TYPE SHARED)
else( NOT WIN32 )
  SET(LIB_TYPE STATIC)
endif( NOT WIN32 )

set( util_SRC
                AttributeList.cpp
    UtilTest.cpp )

set( util_HEADERS
    AbstractException.h
                AttributeList.h
    UtilLib.h
    UtilTest.h )

add_library( ${MIIND_LIBRARY_PREFIX}util ${LIB_TYPE} ${util_SRC} ${util_HEADERS})

CMakeList.txt in libs

ADD_SUBDIRECTORY( LayerMappingLib )
ADD_SUBDIRECTORY( NetLib )
ADD_SUBDIRECTORY( NumtoolsLib )
ADD_SUBDIRECTORY( SparseImplementationLib )
ADD_SUBDIRECTORY( StructnetLib )
ADD_SUBDIRECTORY( UtilLib )
ADD_SUBDIRECTORY( MiindLib )

'Root' CMakeList.txt

project( miind )
cmake_minimum_required(VERSION 2.6)
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake-modules )
set( CMAKE_INSTALL_PREFIX "/usr/local" CACHE STRING "Install prefix." ) # default install prefix. can be set with ccmake


set( MIIND_LIBRARY_PREFIX "miind" CACHE STRING "prefix string for all libs" )


if (WIN32)
        ADD_DEFINITIONS( -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -DBOOST_PROGRAM_OPTIONS_NO_LIB -DBOOST_PROGRAM_OPTIONS_DYN_LINK)
else (WIN32)
        ADD_DEFINITIONS( -Wall ) # Extra compile options, just under Unix.  This would set /W4 underwindows
endif (WIN32)

# This used to be done with CMAKE_CXX_FLAG, however this is a  crude method overriding sensible default settings on some platforms
SET(SWIG_COMPILE_OPTIONS "-fno-strict-aliasing" ) # gnu optimising is too agressive for SWIG produced code according to SWIG documentation

#check for third party libraries
find_package( PkgConfig )

MARK_AS_ADVANCED( USE_FFTWD )
OPTION( USE_FFTWD "Use double precision FFTW if found" ON )
MARK_AS_ADVANCED( USE_FFTWF )
OPTION( USE_FFTWF "Use single precision FFTW if found" ON )

find_package( FFTW )
find_package( Boost COMPONENTS unit_test_framework program_options)
if( Boost_FOUND )
   message("Boost found setting up directories")
   message("BOOST_ROOT: " ${BOOST_ROOT} )
   message("Boost include directories:" ${Boost_INCLUDE_DIR} )
   message("Boost library directories:" ${Boost_LIBRARY_DIRS} )
   include_directories( ${Boost_INCLUDE_DIR} )
   link_directories( ${Boost_LIBRARY_DIR} )
else ( Boost_FOUND )
   message("Boost is mandatory to build the libraries")
endif( Boost_FOUND )

find_package( Root )
if( ROOT_FOUND )
  message("Building Root dependent parts")
else( ROOT_FOUND )
  message("Building parts not depending on Root")
endif( ROOT_FOUND )

# TODO:  This is ugly and must be fixed in the windows install procedure
if (WIN32)
SET (LIB_PREFIX lib)
else (WIN32)
SET (CBLAS_PREFIX gsl)
endif (WIN32)
#----------------swig
FIND_PACKAGE( SWIG )

if (SWIG_FOUND)
        INCLUDE( ${SWIG_USE_FILE} )
        FIND_PACKAGE( PythonLibs )
        INCLUDE_DIRECTORIES( ${PYTHON_INCLUDE_PATH} )
endif (SWIG_FOUND)

SET( CMAKE_SWIG_FLAGS "" )
#---------swig
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20110822/269a4964/attachment-0001.htm>


More information about the CMake mailing list