[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cmake
Subject:    Re: [CMake]  =?utf-8?b?Pz09P3V0Zi04P3E/ID89PT91dGYtOD9xPyA/PSBEZWJ1?=
From:       Cornelis_Bockemühl <cornelis () bockemuehl ! ch>
Date:       2019-09-23 6:50:23
Message-ID: 62a4-5d886b00-13-69a20b00 () 103821876
[Download RAW message or body]

[Attachment #2 (multipart/related)]

[Attachment #4 (multipart/alternative)]


Thanks for the hint: This may indeed help for some situations!

But explicitly not in the most important case because it explicitly says "The list \
does not include any Imported Targets or Alias Targets, but does include Interface \
Libraries." Well, these would of course be the most important target types - like \
after a find_package().

I conclude from your answer (and the previous one) that indeed the thing that I am \
looking for does currently NOT exist! So I may try to launch it as a "feature \
request" - because I cannot believe that I am the only one who gets lost in this \
field.

On the other hand I can also not believe that it can be too difficult to implement: \
The interpreter can always tell me if a target_link_libraries(...) is referring to an \
"unknown target" - so why not have a function that simply tells me which targets are \
known - including ALL possible targets?

I like many of the automatisms that CMake is offering, but like with all automatisms: \
If things do not work as expected you need a way to find out what the problem is - \
and plain guessing is only an option for really trivial cases! But even there it is \
only second choice if the software could just as well tell you exactly what the \
problem is...

Best regards,
Cornelis

Am Sonntag, September 22, 2019 21:46 CEST, Craig Scott <craig.scott@crascit.com> \
schrieb:  You may want to take a look at the BUILDSYSTEM_TARGETS directory property. \
It might not be quite what you're looking for, but it might be close enough. I'm not \
aware of any way to get a list of all defined properties on a given target though.    \
On Mon, Sep 23, 2019 at 12:47 AM Cornelis Bockemühl <cornelis@bockemuehl.ch> wrote: \
Hi Eric,

Thanks for the hint regarding dumping variables: That's good to know!

However, I was learning that working with CMake is in may ways a question of adopting \
some "good practice", but it is not really being enforced by the language. One of the \
things that are for me part of this good practice would be to deal with targets and \
their dependencies, and properties. Which means a certain degree of modularity in the \
sense that you can easily plug projects together by just referring to targets, like \
by calling find_package().

But again: You will never easily know what a package is actually giving you - without \
investing hours and days of code reading - and maybe not even then!

But calling some "dump_targets" function after "find_package" (or also before and \
after - for comparison) would give you a chance to know the effect of endless "code \
deserts" with one line of code.

And because this is so fundamental in my eyes, I still almost assume that also for \
targets and properties there must be some function available - which I simply have \
not found yet!??

Or else I would consider this an urgent feature request!

Best regards,
Cornelis


Am Freitag, September 20, 2019 15:07 CEST, Eric Doenges <doenges@mvtec.com> schrieb:
    
I don't know about the targets, but you can get all variables currently defined for a \
directory by reading the VARIABLES property, e.g. get_property(_variables DIRECTORY \
"${CMAKE_SOURCE_DIR}" PROPERTY VARIABLES) I use this to dump the variables into a \
file so I can see with which variable settings my build directory was configured \
with. With kind regards,
EricAm 20.09.19 um 14:49 schrieb Cornelis Bockemühl:
Right now I am fighting my way through large amounts of CMake code (actually working \
on a ParaView custom application with many own plugins, views, domains, property \
widgets etc. etc.), and it is sometimes really not easy not to lose track completely! \
Sometimes I am happy to be back into complex C++ programming - because I see much \
more logic in the entire thing. And it is of course no news that CMake code is not \
famous for being easy to debug.

Anyway, I am dreaming of some "simple" features that would sometimes help a lot, and \
it is all about "dumping" some kind of data. Actually this is for me often also the \
favorite way to debug C++ code: just print out the values of variables, arrays, etc. \
- e.g. if setting a breakpoint in the debugger is difficult because you are \
interested only in the 928773th occurrence of a certain piece of code (without even \
knowing that number...).

Accordingly in CMake code I am working a lot with the message() function - but within \
that code the problem is often that you do not even know which variables would be \
available at all!

Thus functions like would be really great to have:

       "give me a list of all currently known targets"
       "give me a list of all properties of a target"
       "give me a list of all currently defined variables"
       etc.

What I do not know is: Are this things that already exist - in which case I would be \
happy if somebody could tell me how to find them! -, or are these functions rather \
"feature requests"?

In fact I can hardly believe that I am the first with such kind of dreams, so my hope \
is still that they already exist somewhere...    --Craig ScottMelbourne, \
Australiahttps://crascit.com  Get the hand-book for every CMake user:  Professional \
CMake: A Practical GuideConsulting services (CMake, C++, build/release processes): \
                https://crascit.com/services
--
Cornelis Bockemühl
mail: cornelis@bockemuehl.ch
phone: +41 79 644 9943
Basel, Switzerland
https://cobo.bockemuehl.ch


[Attachment #7 (text/html)]

<html><body><p>Thanks for the hint: This may indeed help for some \
situations!<br/><br/>But explicitly not in the most important case because it \
explicitly says "The list does not include any <a class='reference internal' \
href='https://cmake.org/cmake/help/latest/manual/cmake-buildsystem.7.html#imported-targets'><span \
class='std std-ref'>Imported Targets</span></a> or <a class='reference internal' \
href='https://cmake.org/cmake/help/latest/manual/cmake-buildsystem.7.html#alias-targets'><span \
class='std std-ref'>Alias Targets</span></a>, but does include <a class='reference \
internal' href='https://cmake.org/cmake/help/latest/manual/cmake-buildsystem.7.html#interface-libraries'><span \
class='std std-ref'>Interface Libraries</span></a>." Well, these would of course be \
the most important target types - like after a find_package().<br/><br/>I conclude \
from your answer (and the previous one) that indeed the thing that I am looking for \
does currently NOT exist! So I may try to launch it as a "feature request" - because \
I cannot believe that I am the only one who gets lost in this field.<br/><br/>On the \
other hand I can also not believe that it can be too difficult to implement: The \
interpreter can always tell me if a target_link_libraries(...) is referring to an \
"unknown target" - so why not have a function that simply tells me which targets are \
known - including ALL possible targets?<br/><br/>I like many of the automatisms that \
CMake is offering, but like with all automatisms: If things do not work as expected \
you need a way to find out what the problem is - and plain guessing is only an option \
for really trivial cases! But even there it is only second choice if the software \
could just as well tell you exactly what the problem is...<br/><br/>Best \
regards,<br/>Cornelis<br/><br/>Am Sonntag, September 22, 2019 21:46 CEST, Craig Scott \
&lt;craig.scott@crascit.com&gt; schrieb:<br/>&#160;</p><blockquote type='cite' \
cite='CA+dygY=r27sBF6-7Y8tHkS3DV78YqiMj+K8dDciDvwfCeun2Vw@mail.gmail.com'><div \
dir='ltr'><div dir='ltr'>You may want to take a look at the <a \
href='https://cmake.org/cmake/help/latest/prop_dir/BUILDSYSTEM_TARGETS.html'>BUILDSYSTEM_TARGETS</a> \
directory property. It might not be quite what you're looking for, but it might be \
close enough. I'm not aware of any way to get a list of all defined properties on a \
given target though.</div><div dir='ltr'>&#160;</div>&#160;<div \
class='gmail_quote'><div dir='ltr' class='gmail_attr'>On Mon, Sep 23, 2019 at 12:47 \
AM Cornelis Bockem&#252;hl &lt;<a \
href='mailto:cornelis@bockemuehl.ch'>cornelis@bockemuehl.ch</a>&gt; \
wrote:</div><blockquote class='gmail_quote' style='margin:0px 0px 0px \
0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex'><div><p>Hi \
Eric,<br/><br/>Thanks for the hint regarding dumping variables: That's good to \
know!<br/><br/>However, I was learning that working with CMake is in may ways a \
question of adopting some "good practice", but it is not really being enforced by the \
language. One of the things that are for me part of this good practice would be to \
deal with targets and their dependencies, and properties. Which means a certain \
degree of modularity in the sense that you can easily plug projects together by just \
referring to targets, like by calling find_package().<br/><br/>But again: You will \
never easily know what a package is actually giving you - without investing hours and \
days of code reading - and maybe not even then!<br/><br/>But calling some \
"dump_targets" function after "find_package" (or also before and after - for \
comparison) would give you a chance to know the effect of endless "code deserts" with \
one line of code.<br/><br/>And because this is so fundamental in my eyes, I still \
almost assume that also for targets and properties there must be some function \
available - which I simply have not found yet!??<br/><br/>Or else I would consider \
this an urgent feature request!<br/><br/>Best regards,<br/>Cornelis<br/><br/><br/>Am \
Freitag, September 20, 2019 15:07 CEST, Eric Doenges &lt;<a target='_blank' \
href='mailto:doenges@mvtec.com'>doenges@mvtec.com</a>&gt; \
schrieb:<br/>&#160;</p><blockquote type='cite' \
cite='http://92312bde-b740-1b7b-47ff-fa9f91ee3bbb@mvtec.com'>&#160;</blockquote><p>I \
don't know about the targets, but you can get all variables currently defined for a \
directory by reading the VARIABLES property, e.g.</p><p>get_property(_variables \
DIRECTORY "${CMAKE_SOURCE_DIR}" PROPERTY VARIABLES)</p><p>I use this to dump the \
variables into a file so I can see with which variable settings my build directory \
was configured with.</p><p>With kind regards,<br/>Eric</p><div \
class='gmail-m_1045032418632976360moz-cite-prefix'>Am 20.09.19 um 14:49 schrieb \
Cornelis Bockem&#252;hl:</div><blockquote type='cite'><p>Right now I am fighting my \
way through large amounts of CMake code (actually working on a ParaView custom \
application with many own plugins, views, domains, property widgets etc. etc.), and \
it is sometimes really not easy not to lose track completely! Sometimes I am happy to \
be back into complex C++ programming - because I see much more logic in the entire \
thing. And it is of course no news that CMake code is not famous for being easy to \
debug.<br/><br/>Anyway, I am dreaming of some "simple" features that would sometimes \
help a lot, and it is all about "dumping" some kind of data. Actually this is for me \
often also the favorite way to debug C++ code: just print out the values of \
variables, arrays, etc. - e.g. if setting a breakpoint in the debugger is difficult \
because you are interested only in the 928773th occurrence of a certain piece of code \
(without even knowing that number...).<br/><br/>Accordingly in CMake code I am \
working a lot with the message() function - but within that code the problem is often \
that you do not even know which variables would be available at all!<br/><br/>Thus \
functions like would be really great to have:<br/><br/>&#160;&#160;&#160; &#8220;give \
me a list of all currently known targets&#8221;<br/>&#160;&#160;&#160; &#8220;give me \
a list of all properties of a target&#8221;<br/>&#160;&#160;&#160; &#8220;give me a \
list of all currently defined variables&#8221;<br/>&#160;&#160;&#160; \
etc.<br/><br/>What I do not know is: Are this things that already exist - in which \
case I would be happy if somebody could tell me how to find them! -, or are these \
functions rather "feature requests"?<br/><br/>In fact I can hardly believe that I am \
the first with such kind of dreams, so my hope is still that they already exist \
somewhere...</p></blockquote></div></blockquote></div>&#160;<div>&#160;</div>--<div \
dir='ltr' class='gmail_signature'><div dir='ltr'><div><div dir='ltr'><div \
dir='ltr'><div dir='ltr'><div dir='ltr'><div dir='ltr'><div dir='ltr'><div \
dir='ltr'>Craig Scott<div>Melbourne, Australia</div><div><a target='_blank' \
href='https://crascit.com'>https://crascit.com</a></div><div>&#160;</div><div>Get the \
hand-book for every CMake user:&#160;<a target='_blank' \
href='https://crascit.com/professional-cmake/'>Professional CMake: A Practical \
Guide</a></div><div>Consulting services (CMake, C++, build/release processes): <a \
target='_blank' href='https://crascit.com/services'>https://crascit.com/services</a></ \
div></div></div></div></div></div></div></div></div></div></div></div></blockquote><br/>--<br/>Cornelis \
Bockem&#252;hl<br/>mail: cornelis@bockemuehl.ch<br/>phone: +41 79 644 9943<br/>Basel, \
Switzerland<br/><a href='https://cobo.bockemuehl.ch'>https://cobo.bockemuehl.ch</a><br/><a \
href='https://cobo.bockemuehl.ch'><img src="cid:62A4-5D886B00-15-69A20B00" \
type="image/png" height="54" width="346"/></a></body></html>


["62A4-5D886B00-15-69A20B00" (image/png)]

-- 

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



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic