A note - INSTALL( FILES ) is only good for data files, if you have scripts that have executable permissions using INSTALL( PROGRAMS ) will get execute flag set too.
On Mon, Oct 7, 2019 at 7:49 AM Cornelis Bockemühl <[email protected]> wrote: > Thanks to both you and J Decker: I would say that this is still the part > that I understood! So basically the word "install" in cmake language could > be replaced by "copy" more or less in common human language - right? > > But then, if it is about "installing" a "target", which is libraries in my > case, I would expect the shared libraries to be copied - no? > > Targets use ,... depending on add_executable, or add_library was used( and/or if STATIC/SHARED is specified in add library ) > And this is exactly what does not happen - for no obvious reason! Because > some days ago it even happened in my project ONCE - and then not any more. > But debugging is not easy because since that moment I changed many things, > and basically the reason for my question is that I have no clear idea what > EXACTLY should happen if I put a > > install(TARGETS mylibrary) > I usally put it immediately after the thing that added the target... > > into my CMakeLists.txt. Well, like you explained, and like what I also > thought I had understood: nothing should happen during the configure and > generate runs of cmake, and also not during the "ninja all" build run, but > only during the "ninja install". or else cmake --build . --target install > (which in turn calls ninja in my case). Indeed I observed that it does a > build for "all" first if the initial project is not up to date. > right, it's an 'install' target.. make install ; ninja install, ... etc ya > > But then it tells me that it is successfully "installing" mylibrary, but I > see no shared library appearing in the install tree! Or rather: it happened > once, but not any more - and I should find out what is missing... > When I have issues like that, `cmake --trace ...` option gives a good idea of what cmake thinks it's doing... or maybe ninja V=1 install ? It is copy-if-different, so if the build re-builds and generates the same output library it won't re-install... You can set set( CMAKE_INSTALL_MESSAGE "LAZY" ) which only emits messages for things it actually installs.... (just a side note) But I don't know why it's not going where you think it is ( somewhere in CMAKE_BINARY_DIR IIRC? or did you use CMAKE_CURRENT_BINARY_DIR which can be deeply in install) I do often set my install to 'output' which by default is put into the build directory... > My current workaround is indeed that I am trying to avoid the install step > altogether and build a crazy construction with configure_file stuff in > order to get the libraries to the right place - and I know pretty well that > this is NOT the way how things should be done properly. But I am afraid I > will be ready with this workaround way faster than I will understand what > is going on during this miraculous "install" process! -- > > 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: > https://cmake.org/mailman/listinfo/cmake >
-- 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: https://cmake.org/mailman/listinfo/cmake
