[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