Hi Bill,
I tried the same experiment with a boost .so and it worked. What's
interesting is that I can link with thostmduserapi.so if I do it
manually or just renamed it, and the application works, so it looks like
the file is a valid object. gcc/c++ doesn't complain about a bad object
either. How does cmake determine that a file is an object it can use on
the link line? This is a third party .so, so I'm not quite sure what
they did to build it, but it's likely they did something strange.
Kenny
Bill Hoffman wrote:
Kenneth Chang wrote:
I manufactured a simple setup to demonstrate what I have. I hope
this helps.
...
Is /home/kchang/sandbox/thost/thostmduserapi.so a valid object? I
was able to reproduce what you had if I did this:
cmake_minimum_required(VERSION 2.6.4)
add_executable(foo foo.c)
target_link_libraries(foo /home/hoffman/foo/foo.so)
If I copied a valid .so from /usr/lib
cp /usr/lib/libmpi.so ../foo.so
I get this:
/usr/bin/gcc -o CMakeFiles/foo.dir/foo.c.o -c
/home/hoffman/foo/foo.c
Linking C executable foo
/home/hoffman/CMake26-build/bin/cmake -E cmake_link_script
CMakeFiles/foo.dir/link.txt --verbose=1
/usr/bin/gcc -fPIC CMakeFiles/foo.dir/foo.c.o -o foo -rdynamic
../foo.so -Wl,-rpath,/home/hoffman/foo
make[2]: Leaving directory `/home/hoffman/foo/b'
If I remove the file and create a bogus one:
rm ../foo.so
touch ../foo.so
Then I get the split:
make[2]: Leaving directory `/home/hoffman/foo/b'
make -f CMakeFiles/foo.dir/build.make CMakeFiles/foo.dir/build
make[2]: Entering directory `/home/hoffman/foo/b'
Linking C executable foo
/home/hoffman/CMake26-build/bin/cmake -E cmake_link_script
CMakeFiles/foo.dir/link.txt --verbose=1
/usr/bin/gcc -fPIC CMakeFiles/foo.dir/foo.c.o -o foo -rdynamic
-L/home/hoffman/foo -lfoo -Wl,-rpath,/home/hoffman/foo
/home/hoffman/foo/libfoo.so: file not recognized: File truncated
-Bill
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake