[CMake] need two compilation to achieve success
eial at cs.bgu.ac.il
eial at cs.bgu.ac.il
Wed Jun 3 14:59:17 EDT 2009
On Wed 03 Jun 21:53 2009 eial at cs.bgu.ac.il wrote:
>
> 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
>
>
> _______________________________________________
> 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
>
I've just noticed the suggestion to remove the lib from the TARGET_LINK_LIBRARIES entry which I did, that solved the previous linking problem but now I get unknown reference to each function or var that I use from the external libs.
how can I add them without adding them to TARGET_LINK_LIBRARIES?
More information about the CMake
mailing list