[CMake] List all binaries associated with a target.

Klaim - Joël Lamotte mjklaim at gmail.com
Tue Mar 24 20:09:36 EDT 2015


On Sun, Mar 22, 2015 at 1:22 PM, Roman Bolshakov <roolebo at gmail.com> wrote:

> 2015-03-16 23:22 GMT+03:00 Klaim - Joël Lamotte <mjklaim at gmail.com>:
>
>> Then you can invoke top-level cmake_install.cmake to install a subset
>>> of your project:
>>> DESTDIR=/destination/install/path cmake -DCOMPONENT=A -P
>>> cmake_install.cmake
>>>
>>>
>> It is not clear to me how all this would help installing automatically a
>> library and it's dependencies
>> when I modify then build the library.
>> If my understanding is correct, all this need to be triggered by cmake
>> install command, right?
>> Also, the main issue is gathering binaries so that they can be debugged
>> on windows (as you
>> point later) without having to move files around, in particular
>> dependencies binaries that
>> can and will change through developement.
>>
> cmake install is not completely automatic (you need to define install
> commands for dependencies and all targets explicitly) and is, indeed, a
> separate step from build. If you're fine with explicit definition of
> dependencies you might consider to tether build and install by an external
> script. It would kick off build and if it succeeds it would proceed to the
> cmake install-based pre-test packaging and start testing after then.
>

But then it would be an issue with debugging, which is what I am trying to
fix here.
If I compile only one target I don't need to install everything, just the
changed binaries after compilation
of the target and linking it's dependencies.
It looks to me that at least on windows there is a missing feature in CMake
to trigger that and it makes debugging painful without an external
script doing the job. That script needs to know things that CMake knows but
must be run post-build time, which is what I
was doing until recently. The script is non-trivial because it needs to
know which paths are the dependencies and the target, depending
on the build (tbb.dll vs tbb_debug.dll) and either it have some table
somewhere with the paths (unflexible but work if you have a fixed
dependencies package)
or it needs to guess it (impossible)
or it needs to be feed with these paths (from CMake, which is what I am
trying to attempt but am failing).

After searching a lot online and trying different alternatives I am not
satisfied with any solution. I also asked to our build system (using cmake)
specialist in the company I work for and there seem to be no good solution.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20150325/eb5ce506/attachment.html>


More information about the CMake mailing list