On Thursday 11 November 2010 21:55:31 Alexander Neundorf wrote: > On Thursday 11 November 2010, luxInteg wrote: > > Greetings > > > > I am learning cmake. > > > > I think I now know how to generate libraries and executables but I > > have > > > > not yet grasped how the tree and directory structure is handled and > > by conseqence how one navigates therein. > > > > > > I have this problem. Lets say my build tree has these directories > > > > L---$originalSourceTree/build/lib > > M---$originalSourceTree/build/bin > > > > libraries say libA.so libB.a are in L. I want to generate > > executables A.bin and B.bin in M but > > they each need to link to newly generated libraries libA.so libB.a > > > > > > a) how do I direct cmake (in the CMakeLists.txt/base directory) to build > > the libraries in ( L )above first -i.e. before atempting to do finds > > of nonexistant libraries ? > > The add_library() commands must be before the add_executable() commands, > otherwise the libraries "A" and "B" are not yet know when you do > target_link_libraries(exe A B) > > Beside that, the dependencies in the generated makefiles are complete, so > whenever you do a build, cmake makes sure that the libraries are up-to-date > before it builds the executable. > > > b) if I insert lines such 'find_library(LIB libA path ../lib' in > > the CmakeLists.txt in the base directory this results in an error so > > what does one insert? > > find_library() is not necessary, you can simply use the names of the > library targets when linking against them.
thanks for the help, I added ADD_DEPENDENCIES(libA ../path/to/A_exec ) to the CMakeLists.txt in ~/lib directory (i.e.L) ---AND add_executable(A.exec fileA.c) target_link_libraries(A.exec libA ) to the CMakeLists.txt in the ~/bin directory (i.e.M) a and it seems to have worked -----A related problem is described below I have this file:- (orig_A_exec.out) in in the ~/bin (of the source tree) after building A_exec as explained above I tried running the shall command below EXECUTE_PROCESS(COMMAND ./A_exec > new_A_exec.out - diff orig_A_exec.out new_A_exec.out ) but I did not see neither new_A_exec.out nor orig_A_exec.out in ~/bin in the build directory (i.e.M) i.e nothing happened. I am using a bash shell. some guidance on how to execute bash commands in cmake would be appreciated. luxInteg _______________________________________________ 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
