[Qt-creator] [External] Re: Missing files in CMake project. Or adding special source files.

Toralf Lund toralf.lund at pgs.com
Fri May 10 09:26:44 CEST 2019

On 09/05/2019 16:10, Tobias Hunger wrote:
> Hi Toralf,
> On Thu, 2019-05-09 at 13:15 +0200, Toralf Lund wrote:
>>>> I there anything I
>>>> can do to make the CMake project manager recognise "special" files that
>>>> are listed in the CMake config?
>>> You could list them as sources. CMake tends to ignore most file types, so
>>> they
>>> are safe to add as sources, but cmake will still report them.
>> It's not clear to me what exactly you mean by that.
> target_sources(FooTarget PRIVATE ${PROTO_INPUT}) or something along those lines.
> This is of course provided that ${PROTO_INPUT} does not contain files that cmake
> will mistake for real sources and actually try to build:-)

The problem with that is that the CMake project is shared with a lot of 
people that user other IDEs, or no IDE at all. So I don't know if I 
can/should add extra stuff just because it's needed by Qt Creator...

>>   Our "protobuf" files
>> are mentioned already in that CMakeLists have statements like
>>      set(PROTO_INPUT MonitoringHeader.proto MessageHeader.proto
>>      MetaHeader.proto)
>>      protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS ${PROTO_INPUT})
>> Doesn't that mean they are already listed as sources? Or are you
>> referring to some other CMake mechanism?
> I would expect that function to set up some custom commands. Those will take
> inputs and put their results into the sources.

Well, I guess it sets up custom commands. But it's a function that's 
supplied with CMake; not something we invented.

>   I would not be surprised if those
> showed up in the project tree (maybe filtered away since the files are probably
> marked as generated, check the funnel icon).
> The inputs on the other hand will probably not show up.
>>>>    Also, how about making manual additions
>>>> to the file list? The "obvious" functionality appears to be disabled for
>>>> CMake projects...
>>> Like adding files into an existing CMake project?
>> No necessary. I'm also thinking about files that aren't being built or
>> used as sources for build, but are kept with the project for some
>> reason. One example might be documentation or config files that you want
>> to include in software packages generated independently of cmake. The
>> CMake project won't need to know about these, but it's convenient if Qt
>> Creator is ready to edit them, so as to speak.
> The idea behind Projects mode is to show the view the build system has of your
> project. I think having such a view is valuable and having too many unrelated
> files listed in it will reduce that value. Some exceptions are fine (e.g. header
> files which often were completely missing when using cmake) of course, but I do
> not want to make the tree to configurable.
> If you want a more filesystem based view on your sources, then just use the
> filesystem view instead.
> If you want to navigate your sources, then check out the locator. Just hit ctrl-
> K and start typing the file name, which is way faster than using the project
> tree.

Ctrl-K doesn't do anything in my configuration. What is it supposed to 
be bound to? I may have adjusted keyboard shortcuts at some stage...

But, I do use the locator. I generally open files via the "File in Any 
Project" option, which allows me to find any file *by typing only the 
simple filename* - which makes life a lot easier. That requires the file 
to be included in the project/listed in project views, though, which is 
really the main reason why I want extra files there. I notice that there 
is "File on Filesystem", too, but it looks like I have to type in the 
full path to the file there, which means it's not really of much value 
(as you might as well use the normal Open function.)

- Toralf

> Best Regards,
> Tobias

More information about the Qt-creator mailing list