cmake cannot link against libxml++

Garrett Cooper yanefbsd at gmail.com
Fri Dec 5 00:27:47 PST 2008


On Thu, Dec 4, 2008 at 11:46 PM, Silver Salonen
<silver.salonen at gmail.com> wrote:
>
>
> Silver Salonen wrote:
>>
>>
>> Garrett Cooper-6 wrote:
>>>
>>> On Thu, Dec 4, 2008 at 3:27 AM, Silver Salonen <silver.salonen at gmail.com>
>>> wrote:
>>>>
>>>> Garrett Cooper-6 wrote:
>>>>>
>>>>> On Thu, Dec 4, 2008 at 2:20 AM, Silver Salonen
>>>>> <silver.salonen at gmail.com>
>>>>> wrote:
>>>>>> Garrett Cooper-6 wrote:
>>>>>>>
>>>>>>> On Thu, Dec 4, 2008 at 12:02 AM, Silver Salonen
>>>>>>> <silver.salonen at gmail.com> wrote:
>>>>>>>>
>>>>>>>> Hello.
>>>>>>>>
>>>>>>>> I created a port for Museek+ which is built with cmake now. The
>>>>>>>> problem
>>>>>>>> is
>>>>>>>> that although it gets built OK, cmake cannot link one of its
>>>>>>>> executables
>>>>>>>> against libxml++:
>>>>>>>> =====
>>>>>>>> ... [100%] Building CXX object
>>>>>>>> museekd/CMakeFiles/museekd.dir/distributedsocket.cpp.o Linking CXX
>>>>>>>> executable museekd /usr/bin/ld: cannot find -lxml++-2.6 *** Error
>>>>>>>> code
>>>>>>>> 1
>>>>>>>> =====
>>>>>>>>
>>>>>>>> Concerning libxml++, cmake seems to find it OK - before building:
>>>>>>>> =====
>>>>>>>> -- checking for one of the modules 'libxml++-2.6' -- found
>>>>>>>> libxml++-2.6,
>>>>>>>> version 2.22.0
>>>>>>>> =====
>>>>>>>>
>>>>>>>> Previously I had a problem with cmake finding libiconv.h, but I
>>>>>>>> resolved
>>>>>>>> it
>>>>>>>> with "CMAKE_ARGS+=
>>>>>>>> -DCMAKE_REQUIRED_INCLUDES="${LOCALBASE}/include".
>>>>>>>> But
>>>>>>>> I guess it's irrelevant and not even similar.
>>>>>>>>
>>>>>>>> Is there anything to be specified in order to cmake to find libxml++
>>>>>>>> correctly?
>>>>>>>
>>>>>>> 1. Does /usr/local/lib/libxml++-2.6.a and/or
>>>>>>> /usr/local/lib/libxml++-2.6.so exist?
>>>>>>> 2. What are your CXXFLAGS / LDFLAGS?
>>>>>>>
>>>>>>
>>>>>> 1. Yes:
>>>>>> $ ls -1 /usr/local/lib/libxml++*
>>>>>> /usr/local/lib/libxml++-2.6.a
>>>>>> /usr/local/lib/libxml++-2.6.la
>>>>>> /usr/local/lib/libxml++-2.6.so
>>>>>> /usr/local/lib/libxml++-2.6.so.2
>>>>>>
>>>>>> 2. CXXFLAGS: -O2 -fno-strict-aliasing -pipe
>>>>>> LDFLAGS: nothing
>>>>>
>>>>> Sorry -- let me rephrase: what are CXXFLAGS and LDFLAGS set to for the
>>>>> port?
>>>>> -Garrett
>>>>>
>>>>
>>>> I got the values from pre-everything:
>>>>    @${ECHO_MSG} "${CXXFLAGS}"
>>>>    @${ECHO_MSG} "${LDFLAGS}"
>>>>
>>>> So I guess they are valid in this matter?
>>>
>>> Eh? It all depends on where you're doing the echo...
>>>
>>> Honestly I'd need to see more around where you're running configure,
>>> or passing in args for the parent make (if it doesn't use configure).
>>> You're probably just missing /usr/local/lib in your LDFLAGS though.
>>>
>>
>> I echoed these in "pre-everything" section. Now I set "LDFLAGS+=
>> -L${LOCALBASE}/lib", but it doesn't help much. My Makefile is structured
>> smth like that:
>>
>> PORTNAME=...
>> ...
>> USE_CMAKE=      yes
>> ...
>> LDFLAGS+=       -L${LOCALBASE}/lib
>> CMAKE_ARGS+=    -DCMAKE_REQUIRED_INCLUDES="${LOCALBASE}/include"
>> ...
>> OPTIONS=...
>> ...
>> .include <bsd.port.pre.mk>
>> ...
>> pre-everything::
>>         @${ECHO_MSG} "${CXXFLAGS}"
>>         @${ECHO_MSG} "${LDFLAGS}"
>> ...
>> post-install:
>> ...
>> .include <bsd.port.post.mk>
>>
>
> OK, the problem disappeared when I also set: CONFIGURE_ENV+=
> CPPFLAGS="${CPPFLAGS}" LDFLAGS="${LDFLAGS}"
>
> Thanks for your help! :)

    Bingo, ya got it ;) (I was kind of pointing you in that direction,
but I wasn't sure where you did or didn't pass the variables through).
Environment variables that need to be communicate to the underlying
processes for compiling things should be communicate via either
configure (which just is a wrapper produced by autotools / autoconf)
or gmake, or via the double-dashed args to configure. There are other
make systems like scons, or waf, etc that do different things, but
that's outside the scope of what most folks try to do, and the syntax
is similar.
Best of luck,
-Garrett


More information about the freebsd-ports mailing list