On 03/07/2012 03:55 PM, Serghei Amelian wrote:
On Wednesday 07 March 2012 23:51:01 David C. Rankin wrote: [...]
Serghei, All,
Looking at the concatenation, even if net-snmp-config included linker flags in the linker --libs string, the build should not have failed.
Linking CXX shared library libkscan.so /usr/bin/ld: cannot find -lsane-Wl,-O1,--sort-common,--as-needed,-z,relro,--hash-style=gnu-L/usr/lib collect2: ld returned 1 exit status
The error above shows that the link would have succeeded if '-lsane' and '-Wl' were not concatenated together. The final part of the error was:
collect2: ld returned 1 exit status make[2]: *** [libkscan/libkscan.so.1.0.0] Error 1 make[1]: *** [libkscan/CMakeFiles/kscan-shared.dir/all] Error 2 make: *** [all] Error 2
I don't know where the actual concatenation takes place after the CMakeLists.txt is read, but it looks like whatever takes place after:
LINK kio-shared ${SANE_LIBRARIES}
is where the concatenation problem arises. Where can I look at this logic?
kdegraphics/libkscan/ConfigureChecks.cmake
Check these lines:
string( REGEX REPLACE "(^| )-l" ";" SANE_LIBRARIES "${SANE_LIBRARIES}" ) string( REPLACE " " "" SANE_LIBRARIES "${SANE_LIBRARIES}" )
Hah! Now I see why you did it :)
# cleanup if( SANE_INCLUDE_DIRS ) string( REGEX REPLACE "(^| )-I" ";" SANE_INCLUDE_DIRS "${SANE_INCLUDE_DIRS}" ) endif( ) if( SANE_LIBRARIES ) string( REGEX REPLACE "(^| )-l" ";" SANE_LIBRARIES "${SANE_LIBRARIES}" ) # string( REPLACE " " "" SANE_LIBRARIES "${SANE_LIBRARIES}" ) endif( )
Commenting results in this cmake error.
CMake Error at cmake/modules/TDEMacros.cmake:662 (add_library): Target "kscan-shared" links to item "v4l1 " which has leading or trailing whitespace. This is now an error according to policy CMP0004. Call Stack (most recent call first): libkscan/CMakeLists.txt:38 (tde_add_library)
So the string REPLACE which was meant to get around this CMake error is what is causing the run-together concatenation in the library string. I will play with the regex and see if we can come up wit one that trims leading or trailing whitespace for CMake, but doesn't result in run-together parameters.... :)