[CMake] Problem with installing shared libraries

Tero Laitinen tero.laitinen at audioriders.fi
Thu May 29 06:53:14 EDT 2008


Hi again,

I got it working by specifying different build directories for each 
subdirectory (the second parameter of add_subdirectory-command).

add_subdirectory(${DIR} build/${DIR}) worked.

It could be mentioned somewhere (in the documentation or as an error 
message) that a same path cannot be used more than once.

Best Regards,

Tero Laitinen

Tero Laitinen wrote:
> Hi,
>
> I haven't been able to get cmake to install shared libraries from 
> directories (CMakeLists.txt files) that only contain libraries, that 
> is, no programs.
>
> The shared libraries defined in CMakeLists.txt that define also 
> programs (with add_executable - command) get installed without 
> problems (although twice, which is odd).
>
> I tested with different versions of cmake and also on two different 
> architectures. I could reproduce the problem on all of them. The 
> configurations tested are following:
>
> debian amd64 cmake version 2.4-patch 5
> debian amd64 cmake version 2.6-patch 0
> debian i386 cmake version 2.4-patch 6
>
> I packaged the files needed to experiment with the problem to 
> http://www.iki.fi/tol/cmake-test.tar.gz
>
> I'll describe the contents in this message also. The test package has 
> three CMakeLists.txt files.
>
>
> ----------------------------------------------------- 
> test/CMakeLists.txt starts
> project(test)
>
> set(CMAKE_BUILD_TYPE_SHARED_LIBS ON)
>
> set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/dist)
>
> set(INSTALL_OPTS LIBRARY DESTINATION lib
>                 RUNTIME DESTINATION bin)
>
> foreach(DIR testlib testapp)
>    add_subdirectory(${DIR} build)
> endforeach(DIR)
> ----------------------------------------------------- 
> test/CMakeLists.txt ends
>
>
>
> ----------------------------------------------------- 
> test/testlib/CMakeLists.txt starts
> include_directories(include)
> add_library(testlib-static STATIC src/testlib.c)
> add_library(testlib SHARED src/testlib.c)
> install(TARGETS testlib ${INSTALL_OPTS})
> ----------------------------------------------------- 
> test/testlib/CMakeLists.txt ends
>
>
> ----------------------------------------------------- 
> test/testapp/CMakeLists.txt starts
> include_directories(${CMAKE_SOURCE_DIR}/testlib/include)
> add_library(testapplib SHARED src/testapplib.c)
> add_executable(testapp src/testapp.c)
>
> target_link_libraries(testapp testlib testapplib)
> install(TARGETS testapp testapplib ${INSTALL_OPTS})
> ----------------------------------------------------- 
> test/testapp/CMakeLists.txt ends
>
>
>
> The .c - files in this test project are really simple one-liners just 
> to set the compile dependencies correctly.
>
> The problem description follows:
>
> tero at term12:~/temp/test$ cmake .
> -- Configuring done
> -- Generating done
> -- Build files have been written to: /home/tero/temp/test
>
> tero at term12:~/temp/test$ make
> [ 25%] Building C object build/CMakeFiles/testlib.dir/src/testlib.o
> Linking C shared library libtestlib.so
> [ 25%] Built target testlib
> [ 50%] Building C object 
> build/CMakeFiles/testlib-static.dir/src/testlib.o
> Linking C static library libtestlib-static.a
> [ 50%] Built target testlib-static
> [ 75%] Building C object build/CMakeFiles/testapplib.dir/src/testapplib.o
> Linking C shared library libtestapplib.so
> [ 75%] Built target testapplib
> [100%] Building C object build/CMakeFiles/testapp.dir/src/testapp.o
> Linking C executable testapp
> [100%] Built target testapp
>
> tero at term12:~/temp/test$ make install
> [ 25%] Built target testlib
> [ 50%] Built target testlib-static
> [ 75%] Built target testapplib
> [100%] Built target testapp
> Linking C executable CMakeFiles/CMakeRelink.dir/testapp
> Install the project...
> -- Install configuration: ""
> -- Install configuration: ""
> -- Installing /home/tero/temp/test/dist/bin/testapp
> -- Installing /home/tero/temp/test/dist/lib/libtestapplib.so
> -- Install configuration: ""
> -- Installing /home/tero/temp/test/dist/bin/testapp
> -- Installing /home/tero/temp/test/dist/lib/libtestapplib.so
>
> The program testapp and the shared library libtestapplib.so both get 
> installed (and twice, weird?) but the shared library libtestlib.so not.
>
> Am I doing something wrong or is this a bug? Thanks in advance for any 
> ideas.
>
> Best Regards,
>
> Tero Laitinen
> _______________________________________________
> CMake mailing list
> CMake at cmake.org
> http://www.cmake.org/mailman/listinfo/cmake
>



More information about the CMake mailing list