Hello
This simple CMakeLists.txt will (on NetBSD at least) cause the binary
'bar' to be linked with -fPIC. Is this really necessary? I know that it
must be used when producing the shared object 'foo', but I did not know
it was needed for the executable also? I have checked the flags passed
from gcc to the linker during the linking of the executable but can not
see that -fPIC makes any difference.
CMakeLists.txt: (the foo.c and bar.c are very simple C files)
PROJECT(foobar)
ADD_LIBRARY(foo SHARED foo.c)
ADD_EXECUTABLE(bar bar.c)
TARGET_LINK_LIBRARIES(bar foo)
Output from verbose make:
/usr/pkg/bin/cmake -H/home/lars/tmp/hello -B/home/lars/tmp/hello/build
--check-build-system CMakeFiles/Makefile.cmake 0
make -f CMakeFiles/Makefile2 all
make -f CMakeFiles/foo.dir/build.make CMakeFiles/foo.dir/depend
Scanning dependencies of target foo
/usr/pkg/bin/cmake -E cmake_depends "Unix Makefiles"
/home/lars/tmp/hello/build /home/lars/tmp/hello/build
/home/lars/tmp/hello/build/CMakeFiles/foo.dir/DependInfo.cmake
make -f CMakeFiles/foo.dir/build.make CMakeFiles/foo.dir/build
Building C object CMakeFiles/foo.dir/foo.o
gcc -Dfoo_EXPORTS -fPIC -o CMakeFiles/foo.dir/foo.o -c
/home/lars/tmp/hello/foo.c
Linking C shared library libfoo.so
/usr/pkg/bin/cmake -E remove -f libfoo.a libfoo.so
gcc -fPIC -shared -o libfoo.so "CMakeFiles/foo.dir/foo.o"
make -f CMakeFiles/bar.dir/build.make CMakeFiles/bar.dir/depend
Scanning dependencies of target bar
/usr/pkg/bin/cmake -E cmake_depends "Unix Makefiles"
/home/lars/tmp/hello/build /home/lars/tmp/hello/build
/home/lars/tmp/hello/build/CMakeFiles/bar.dir/DependInfo.cmake
make -f CMakeFiles/bar.dir/build.make CMakeFiles/bar.dir/build
Building C object CMakeFiles/bar.dir/bar.o
gcc -o CMakeFiles/bar.dir/bar.o -c /home/lars/tmp/hello/bar.c
Linking C executable bar
/usr/pkg/bin/cmake -E remove -f bar
gcc -fPIC "CMakeFiles/bar.dir/bar.o" -o bar -L/home/lars/tmp/hello/build
-lfoo -Wl,-rpath,/home/lars/tmp/hello/build
Best regards
Lars Nordlund
_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake