I'm using CMake 2.4.3 on Linux.  When I do:

OPTION(TEEM_BUILD_SHARED_LIBS "Build Teem with shared libraries." OFF)
OPTION(BUILD_SHARED_LIBS ${TEEM_BUILD_SHARED_LIBS})

or

OPTION(BUILD_SHARED_LIBS "Build package with shared libraries." OFF)

and later:

    FIND_PACKAGE(PNG)
    IF(PNG_FOUND)
      ADD_DEFINITIONS(-DTEEM_PNG=1 ${PNG_DEFINITIONS})
      SET(TEEM_PNG_LIB ${PNG_LIBRARIES})
      SET(TEEM_PNG_IPATH ${PNG_INCLUDE_DIR})
    ENDIF(PNG_FOUND)

Now I see in my cmake configuration:

 PNG_LIBRARY                      /usr/lib64/libpng.so
 PNG_PNG_INCLUDE_DIR              /usr/include

My packages libraries are built static, but I'm pulling in shared versions of external libraries.

I also have a static version of the library:

libpng-devel              /usr/lib64/libpng.a
libpng-devel              /usr/lib64/libpng.so

Why did FIND_PACKAGE and eventually FIND_LIBRARY expand this to the full path and name of the library?

When I look at the build output I see a spurious -rdynamic instead of -static.

Linking C executable ../../bin/unu
cd /home/sci/bigler/pub/src/teem/octagon/src/bin && /usr/local/bin/cmake -P CMakeFiles/unu.dir/cmake_clean_target.cmake cd /home/sci/bigler/pub/src/teem/octagon/src/bin && /usr/bin/gcc -O3 -DNDEBUG -fPIC "CMakeFiles/unu.dir/unu.o" -o ../../bin/unu -rdynamic -L/home/sci/bigler/pub/src/teem/octagon/bin -L/usr/lib64 -lteem -lbz2 -lz -lpng -lz -lm -Wl,-rpath,/home/sci/bigler/pub/src/teem/octagon/bin:/usr/lib64

I've verified that if I pass -static instead of -rdynamic it does what I think it should.

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

Reply via email to