[CMake] need two compilation to achieve success
eial at cs.bgu.ac.il
eial at cs.bgu.ac.il
Wed Jun 3 14:53:50 EDT 2009
On Wed 03 Jun 18:37 2009 Michael Wild wrote:
>
> On 3. Jun, 2009, at 15:15, eial at cs.bgu.ac.il wrote:
>
> >
> > On Tue 02 Jun 7:33 2009 eial at cs.bgu.ac.il wrote:
> >>
> >> On Mon 01 Jun 20:56 2009 Bill Hoffman wrote:
> >>> eial at cs.bgu.ac.il wrote:
> >>>> On Mon 01 Jun 15:28 2009 Bill Hoffman wrote:
> >>>>> eial at cs.bgu.ac.il wrote:
> >>>>>> On Mon 01 Jun 8:18 2009 Tyler Roscoe wrote:
> >>>>>> thanks for the tip, it solved the issue.
> >>>>>>
> >>>>>>
> >>>>> I am glad that worked for you but something else is wrong...
> >>>>> How are
> >>>>> you linking bin/libs/libAgathaUtils.so' to `bin/AgathaHud' ?
> >>>>> You should
> >>>>> have something like:
> >>>>>
> >>>>> target_link_libraries(AgathaHud AgathaUtils)
> >>>>>
> >>>>> That should add the dependency for you. Do you have that?
> >>>>>
> >>>>> -Bill
> >>>>>
> >>>>
> >>>> I have this:
> >>>> TARGET_LINK_LIBRARIES(AgathaHud ${LIBRARY_OUTPUT_PATH}/
> >>>> libAgathaUtils.so
> >>>> ${LIBRARY_OUTPUT_PATH}/
> >>>> libAgathaEngine.so
> >>>> ${LIBRARY_OUTPUT_PATH}/
> >>>> libAgathaThreads.so
> >>>> cv
> >>>> PocoXML
> >>>> PocoFoundation
> >>>> AR
> >>>> ARMulti
> >>>> ARvideo)
> >>>>
> >>>>
> >>>
> >>> OK, that is not correct. For targets that CMake builds, you can
> >>> just
> >>> use the target name. What you have now will only work on some
> >>> systems
> >>> and not work if you use OUTPUT_NAME or other properties on those
> >>> libraries.
> >>>
> >>> You want:
> >>> target_link_libraries(AgathaHud AgathaUtils AgathaEntine
> >>> AgathaThreads)
> >>>
> >>> That is assuming that AgathaUtils AgathaEntine AgathaThreads are all
> >>> built in the same project by CMake.
> >>>
> >>> -Bill
> >>>
> >>
> >> yes they are built in the same project.
> >> changing you your suggestions results in two new problems:
> >> 1) removing ${LIBRARY_OUTPUT_PATH} results in "/usr/lib/gcc/x86_64-
> >> pc-linux-gnu/4.3.3/../../../../x86_64-pc-linux-gnu/bin/ld: cannot
> >> find -lAgathaUtils" error, the structure of the output dir is bin
> >> for the binary and bin/libs for the libs.
> >> 2) with ${LIBRARY_OUTPUT_PATH}, compilation fails due to unknown
> >> reference to all vars and functions that are part of the external
> >> libs.
> >> I've encountered this before and that was the only way that I've
> >> found to solve it.
> >>
> >>
> >>
> >>
> >> _______________________________________________
> >> 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
> >>
> >
> > any hints? now it doesn't compile
> >
>
> Please show us the "target_link_libraries" command you use, otherwise
> we can't help you. Just saying "it doesn't work" won't get you
> anywhere... I suspect now that you are doing this:
>
> target_link_libraries( AgathaHud libAgathaUtils.so libAtathaEntine.so
> libAgathaThreads.so )
>
> which would be COMPLETELY wrong (see the answer by Bill above...)
>
> Michael
>
TARGET_LINK_LIBRARIES(AgathaHud libAgathaUtils libAgathaEngine libAgathaThreads)
the error output is: /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.3/../../../../x86_64-pc-linux-gnu/bin/ld:
cannot find -llibAgathaUtils
like I've said before, the libs are generated into the bin/libs folder and the actual program binary
is created at bin
More information about the CMake
mailing list