Hi Ray, The packages I use are installed in a non-standard path, because I don't have access to the system directories on most systems I work on, but are used by many other libraries. They are also all separate packages, not packages in the same source tree. I did not see my attachment on the mailing list archive, so instead I just put it on Github. It can be found here:
https://github.com/Sbte/cmake-example I hope the example shows my workflow, and also what doesn't work for me. Sven On 06/28/2016 11:52 AM, Raymond Wan wrote: > Hi Sven, > > > On Tue, Jun 28, 2016 at 5:26 PM, Sven Baars <s.ba...@rug.nl> wrote: >> Hey all, >> >> Since I did not receive a reply to my previous mail, I decided to write a >> minimal example explaining my problem, where I kept al the names as I used >> in my previous mails. I hope that after seeing my example, someone can >> explain me what I am doing wrong here. I included a script that reproduces >> the problem. >> >> Cheers, >> Sven > > I'm not much of an expert with CMake, but I can explain to you what > I've done, at least. > > If I understand correctly, package X makes use of package Y, but > during compilation, it cannot find it? I think what you can do > depends on whether X and Y are in two separate source trees. > > If they are, then it is almost like Y is the zlib library. Then what > you can do is, like the zlib library, install it into a system > directory (i.e., via INSTALL ()) and then X will use a FIND_PACKAGE to > look for it. > > But, suppose Y isn't like zlib. For example, it is a library that is > within the same source tree and will only ever be used by X (both of > which are written by you). I think this is the scenario that you're > talking about? In my case, I have done this in my CMakeLists.txt: > > SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) > > I guess you can set it > [https://cmake.org/cmake/help/v3.3/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY.html] > to anything so that all of the libraries will be installed into one > place without doing an INSTALL. Of course, this directory is or > somewhere within the build/ directory. (I suppose doing an install > into ${CMAKE_BINARY_DIR} would achieve the same thing?) > > I had previously installed Y's archive into a system directory, but > besides the need to run FIND_PACKAGE, I thought it was "silly" to > install an archive into a system directory that is only used by my own > program. Seems a bit messy and intrusive to the end-user -- my > libraries are quite unlike zlib; few chance someone else will use it > :-) . At the very least, this approach keeps it in one place within > build/ . > > I'm not sure if it is the "right" way to do it, but this is what I do > at the moment... I hope it helps! > > Ray -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake