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.... :)
--
David C. Rankin, J.D.,P.E.