[CMake] Querying project dependencies from the UNIX command-line

ardi ardillasdelmonte at gmail.com
Fri Jul 20 06:12:13 EDT 2018


On Wed, Jul 18, 2018 at 10:04 PM, Johannes Zarl-Zierl
<johannes at zarl-zierl.at> wrote:
> Hi Ardi,
>
> Am Mittwoch, 18. Juli 2018, 11:31:50 CEST schrieb ardi:
>> For example, I'd like to type "somecommand /path/to/someproject" at
>> the UNIX command line, and get this output:
>> [...]
>> Furthermore, if another command could show optional requisites, it
>> would be really great: "anothercommand /path/to/someproject"
>>
>> Project /path/to/someproject can optionally use the following when being
>> built:
>> [...]
>> So, can I get this functionality from plain CMake/CPack ? Or would I
>> need additional tools (Note: I know about Hunter, but first I'd like
>> to know if plain CMake does already offer this feature).
>
> I don't think there's something that gives you exactly what you described,
> especially not for a random CMake project.
>
> If you can add some commands to the CMakeLists.txt, though, then the
> FeatureSummary module may suit your needs.
>
> Basically, you include the module an then add a cmake command like this:
> feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
>
> When you run cmake, you'll get a summary of which packages have been found/not
> found, and the required version if you supplied one for the corresponding
> find_package command.
>
> Cheers,
>   Johannes

Thanks a lot, Johannes!! I was talking about querying such info
without tweaking the CMakeLists.txt, just taking it as it comes from
each project developer. Anyway, the info about required and optional
dependencies is within the CMakeLists.txt of every project, and of
course CMake gets all that info when building a project, so I'm
guessing that, even if there's currently no command-line flag for
telling CMake to dump to stdout the required or the optional
dependencies, it shouldn't be hard to patch CMake for adding such
flag, or alternatively writing a simple utility that does the job,
linked with a small part of the CMake source code.

Thanks!

ardi


More information about the CMake mailing list