<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-GB link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>Hi,<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>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:<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>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.<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>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.<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Is there an obvious mistake which would brake working files when moving from 2.6 to 2.8? This problem occurs under fedora linux.<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Is there a way to get more information on why the library is not built?<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Thanks,<o:p></o:p></p><p class=MsoNormal>Marc<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>--------------------------------------------------------------------------<o:p></o:p></p><p class=MsoNormal>project( ${MIIND_LIBRARY_PREFIX}util )<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>if( NOT WIN32 )<o:p></o:p></p><p class=MsoNormal>&nbsp; SET(LIB_TYPE SHARED)<o:p></o:p></p><p class=MsoNormal>else( NOT WIN32 )<o:p></o:p></p><p class=MsoNormal>&nbsp; SET(LIB_TYPE STATIC)<o:p></o:p></p><p class=MsoNormal>endif( NOT WIN32 )<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>set( util_SRC<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AttributeList.cpp<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; UtilTest.cpp )<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; <o:p></o:p></p><p class=MsoNormal>set( util_HEADERS<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; AbstractException.h<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AttributeList.h<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; UtilLib.h<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; UtilTest.h )<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>add_library( ${MIIND_LIBRARY_PREFIX}util ${LIB_TYPE} ${util_SRC} ${util_HEADERS})<o:p></o:p></p><div style='mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.0pt;padding:0cm 0cm 1.0pt 0cm'><p class=MsoNormal style='border:none;padding:0cm'><o:p>&nbsp;</o:p></p></div><p class=MsoNormal>CMakeList.txt in libs<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>ADD_SUBDIRECTORY( LayerMappingLib )<o:p></o:p></p><p class=MsoNormal>ADD_SUBDIRECTORY( NetLib )<o:p></o:p></p><p class=MsoNormal>ADD_SUBDIRECTORY( NumtoolsLib )<o:p></o:p></p><p class=MsoNormal>ADD_SUBDIRECTORY( SparseImplementationLib )<o:p></o:p></p><p class=MsoNormal>ADD_SUBDIRECTORY( StructnetLib )<o:p></o:p></p><p class=MsoNormal>ADD_SUBDIRECTORY( UtilLib )<o:p></o:p></p><p class=MsoNormal>ADD_SUBDIRECTORY( MiindLib )<o:p></o:p></p><div style='mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.0pt;padding:0cm 0cm 1.0pt 0cm'><p class=MsoNormal style='border:none;padding:0cm'><o:p>&nbsp;</o:p></p></div><p class=MsoNormal>&#8216;Root&#8217; CMakeList.txt<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>project( miind )<o:p></o:p></p><p class=MsoNormal>cmake_minimum_required(VERSION 2.6)<o:p></o:p></p><p class=MsoNormal>set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake-modules )<o:p></o:p></p><p class=MsoNormal>set( CMAKE_INSTALL_PREFIX &quot;/usr/local&quot; CACHE STRING &quot;Install prefix.&quot; ) # default install prefix. can be set with ccmake<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>set( MIIND_LIBRARY_PREFIX &quot;miind&quot; CACHE STRING &quot;prefix string for all libs&quot; )<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>if (WIN32)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADD_DEFINITIONS( -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -DBOOST_PROGRAM_OPTIONS_NO_LIB -DBOOST_PROGRAM_OPTIONS_DYN_LINK)<o:p></o:p></p><p class=MsoNormal>else (WIN32)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADD_DEFINITIONS( -Wall ) # Extra compile options, just under Unix.&nbsp; This would set /W4 underwindows<o:p></o:p></p><p class=MsoNormal>endif (WIN32)<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal># This used to be done with CMAKE_CXX_FLAG, however this is a&nbsp; crude method overriding sensible default settings on some platforms<o:p></o:p></p><p class=MsoNormal>SET(SWIG_COMPILE_OPTIONS &quot;-fno-strict-aliasing&quot; ) # gnu optimising is too agressive for SWIG produced code according to SWIG documentation<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>#check for third party libraries<o:p></o:p></p><p class=MsoNormal>find_package( PkgConfig )<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>MARK_AS_ADVANCED( USE_FFTWD )<o:p></o:p></p><p class=MsoNormal>OPTION( USE_FFTWD &quot;Use double precision FFTW if found&quot; ON )<o:p></o:p></p><p class=MsoNormal>MARK_AS_ADVANCED( USE_FFTWF )<o:p></o:p></p><p class=MsoNormal>OPTION( USE_FFTWF &quot;Use single precision FFTW if found&quot; ON )<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>find_package( FFTW )<o:p></o:p></p><p class=MsoNormal>find_package( Boost COMPONENTS unit_test_framework program_options)<o:p></o:p></p><p class=MsoNormal>if( Boost_FOUND )<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp; message(&quot;Boost found setting up directories&quot;)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp; message(&quot;BOOST_ROOT: &quot; ${BOOST_ROOT} )<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp; message(&quot;Boost include directories:&quot; ${Boost_INCLUDE_DIR} )<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp; message(&quot;Boost library directories:&quot; ${Boost_LIBRARY_DIRS} )<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp; include_directories( ${Boost_INCLUDE_DIR} )<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp; link_directories( ${Boost_LIBRARY_DIR} )<o:p></o:p></p><p class=MsoNormal>else ( Boost_FOUND )<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp; message(&quot;Boost is mandatory to build the libraries&quot;)<o:p></o:p></p><p class=MsoNormal>endif( Boost_FOUND )<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>find_package( Root )<o:p></o:p></p><p class=MsoNormal>if( ROOT_FOUND )<o:p></o:p></p><p class=MsoNormal>&nbsp; message(&quot;Building Root dependent parts&quot;)<o:p></o:p></p><p class=MsoNormal>else( ROOT_FOUND )<o:p></o:p></p><p class=MsoNormal>&nbsp; message(&quot;Building parts not depending on Root&quot;)<o:p></o:p></p><p class=MsoNormal>endif( ROOT_FOUND )<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal># TODO:&nbsp; This is ugly and must be fixed in the windows install procedure<o:p></o:p></p><p class=MsoNormal>if (WIN32)<o:p></o:p></p><p class=MsoNormal>SET (LIB_PREFIX lib)<o:p></o:p></p><p class=MsoNormal>else (WIN32)<o:p></o:p></p><p class=MsoNormal>SET (CBLAS_PREFIX gsl)<o:p></o:p></p><p class=MsoNormal>endif (WIN32)<o:p></o:p></p><p class=MsoNormal>#----------------swig<o:p></o:p></p><p class=MsoNormal>FIND_PACKAGE( SWIG )<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>if (SWIG_FOUND)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INCLUDE( ${SWIG_USE_FILE} )<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FIND_PACKAGE( PythonLibs )<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INCLUDE_DIRECTORIES( ${PYTHON_INCLUDE_PATH} )<o:p></o:p></p><p class=MsoNormal>endif (SWIG_FOUND)<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>SET( CMAKE_SWIG_FLAGS &quot;&quot; )<o:p></o:p></p><p class=MsoNormal>#---------swig<o:p></o:p></p></div></body></html>