-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Including headers for all libraries based on ROOT_STANDARD_LIBRARY_PACKAGE #6014
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
else() | ||
message(${h}) | ||
endif() | ||
endforeach() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Have a look at ROOT_GENERATE_DICTIONARY
for the logic to check if the header exists, it may make sense to something similar here or split that search logic into its own macro or function. ARG_HEADERS
may actually contain more than just the headers for a given target, so I'm not sure we can use it verbatim to add headers to the targets. It should be ok if all targets use NODEPHEADERS
properly, but it's probably worth checking anyway.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I had a look and the logic seems overly complex to me. I would like to keep it simple. I improved the message in case the header is not found and on the current master, it is never triggered. Therefore this logic seems to suffice.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't we explicitly enumerate all sources when calling ROOT_STANDARD_LIBRARY_PACKAGE
nowadays?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
YES! But people seem to have a different understanding of what a source is. In ROOT it seems people just add sources that need to be compiled. IMO at least all files containing code should be added.
For ROOT, that's a rather big change. I can try to do that for the libraries I will be working with, but I would like to have more support to move in this direction. Maybe we should discuss this in a team meeting.
Fixes part of ROOT-10915.
So in the meantime I can work pretty comfortably with the Open Folder mode in Visual Studio or with CLion. So this might still be an issue for some IDE users, but I do not need it solved. Should we close the PR? |
I wonder if this also applies to other clang-tidy setups? For example, I never got any warning from I'd suggest we check if static analysis tools like Assigning this PR to me because I'll probably do this check at some point, but probably not any time soon. So whoever is reading this and wants to do some work on code analysis, please feel free to re-assign! |
Test Results 18 files 18 suites 4d 2h 59m 10s ⏱️ Results for commit 91d8e5f. |
Another related issue is that sometimes the IDE get's confused and it opens the header copied to the build-dir rather than the original header, since it's not part of the CMake target. So you start modifying the wrong one, then rebuild, and it get's overwritten and you lose your changes. |
Recent CMake also allows to distinguish between PRIVATE (such as those of RooFit or in core/base/src/TListOfDataTypes.h) and PUBLIC headers. See https://discourse.cmake.org/t/file-set-xyz-is-listed-in-interface-file-sets-of-w-but-has-not-been-exported/9131/4 Sth like:
see details #18419 Might also help with #8709 by @hageboeck, #16327 by @vgvassilev and with cpack https://its.cern.ch/jira/browse/ROOT-6428 |
Partially solves: ROOT-10915
Reasoning from the ticket: