Closed jherico closed 8 months ago
Thanks a lot for doing this. Having some of the projects at top-level in the project browser was always kinda annoying. Aside from the CMake bump, which we need to discus internally @marty-johnson59 this looks good.
I've reverted the minimum required declaration, but left the folder setting for now. I believe what happens now is that if you're using CMake < 3.19 it emit a warning that you can't set the folder property on interface libraries, but doesn't prevent the CMake configuration from finishing.
Thanks!
Merging - 3 approvals
Looks like this breaks compatibility with older CMake versions. We currently state CMake 3.12 or newer in our build document. So we either need to fix the CMakeList or update our requirements (I prefer the latter).
I agree with Sascha that updating the minimum CMake version should be strongly considered, perhaps even going so far as to including instructions on how to bootstrap a private CMake version if you're stuck on something older.
While this is an example repository and should be aimed at the widest audience, it's essentially a top level project and doesn't have downstream consumers who might be constrained in their development environment. While some example creators might be so constrained, I think it's reasonable that this should be prioritized lower relative to the ability to use more advanced CMake features.
Description
This makes some small tweaks to the CMake config to migrate some of the projects that are cluttering the top level into proper subfolders. The glslangValidator and the cli11 projects both create things at the top level or in folders under the top level that should be moved into the "Third Party" folder in IDEs supporting hierarchies. Additionally, some targets that have been created by
add_custom_target
which are useful for bundling, but which are useless when navigating projects in an IDE have been moved to "Cmake/CustomTargets" (the current offline shader compilation WIP branch generates a TON of these)The only caveat here is that the CLI11 project is generated as an
interface_library
target type, which has a limited set of properties that can be set on it prior to CMake version 3.19, so the minimum required has to be bumped in order to resolve that. The minimum required CMake version can be left alone if needed but that one specific change will have to be reverted in that case.General Checklist:
This only modifies some meta properties for the project targets in CMake and the resulting location of the projects inside a hierarchical build IDE such as MSVC. It has no impact on compilation or linking properties, nor changes any sample code, so most of these checks are superfluous in this instance.
[ ] ~This PR describes the scope and expected impact of the changes I am making~
Note: The Samples CI runs a number of checks including: