Re: [cmake-developers] Feature suggestion: auto-create missing files
OK, I can see there's quite a few voices against and none for. Idea scratched. Thanks everyone for input. Petr -- 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: http://public.kitware.com/mailman/listinfo/cmake-developers
Re: [cmake-developers] Feature suggestion: auto-create missing files
On Tue, Apr 11, 2017 at 21:28:40 +0200, Alexander Neundorf wrote: > personally I'm not convinced. > Technically it would violate the "the source dir is read-only" rule. > A typo would generate files. With multiple build dirs the behaviour will be > slightly different in the two dirs. > ...not very strong arguments, but OTOH touching the file manually is also not > too complicated. On case-insensitive file systems, there's also the "what if it exists, but not with matching case?" problem. What was intended. Sure, CMake will currently just leave it alone, but does the file exist? Is the file on disk a typo? I don't think CMake can make that decision. --Ben -- 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: http://public.kitware.com/mailman/listinfo/cmake-developers
Re: [cmake-developers] Feature suggestion: auto-create missing files
It is easy enough in recent CMake versions to list all the subdirectories and their targets recursively. Then you can list their files, check if they exist and create them if you want. It can be done with a macro in your project and doesn’t need upstream support. The next possible solution would be to create the file on disk and use a glob to list all the files. You would need to rerun CMake manually whenever you add a file. I would say that both solutions are not really good, even dangerous. But if you really want them, you can pick your poison. /Florent > On 11 Apr 2017, at 21:28, Alexander Neundorf wrote: > > On 2017 M04 11, Tue 11:52:52 CEST Brad King wrote: >> On 04/11/2017 11:41 AM, Petr Kmoch wrote: >>> Currently, adding a new source file to a CMake-controlled project >>> means doing two things: creating the file on disk, and adding it >>> to the relevant CMakeList add_library() or add_executable() call. >> >> I view this as a matching pair with an implicit sanity check. >> >>> switch from current behaviour of "error out if source file is not found" >>> to "create empty source file if it's not found." >> >> So a typo in the `CMakeLists.txt` file leads to silent creation of a >> source file instead of an error message? >> >> That said, I can see how the proposed feature might be useful when >> iteratively developing in an IDE. Add the file to `CMakeLists.txt`, >> reconfigure, and open the new (now existing) file to edit in the IDE. >> >>> Is this something that would be acceptable into CMake? Any comments? >> >> I'd like to hear more opinions from others before considering it >> upstream. It feels like a pretty personal workflow right now, and >> can be implemented in CMake code already (perhaps with the `SOURCES` >> target property to avoid separate lists). > > personally I'm not convinced. > Technically it would violate the "the source dir is read-only" rule. > A typo would generate files. With multiple build dirs the behaviour will be > slightly different in the two dirs. > ...not very strong arguments, but OTOH touching the file manually is also not > too complicated. > > Alex > > -- > > 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: > http://public.kitware.com/mailman/listinfo/cmake-developers -- 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: http://public.kitware.com/mailman/listinfo/cmake-developers
Re: [cmake-developers] Feature suggestion: auto-create missing files
On 2017 M04 11, Tue 11:52:52 CEST Brad King wrote: > On 04/11/2017 11:41 AM, Petr Kmoch wrote: > > Currently, adding a new source file to a CMake-controlled project > > means doing two things: creating the file on disk, and adding it > > to the relevant CMakeList add_library() or add_executable() call. > > I view this as a matching pair with an implicit sanity check. > > > switch from current behaviour of "error out if source file is not found" > > to "create empty source file if it's not found." > > So a typo in the `CMakeLists.txt` file leads to silent creation of a > source file instead of an error message? > > That said, I can see how the proposed feature might be useful when > iteratively developing in an IDE. Add the file to `CMakeLists.txt`, > reconfigure, and open the new (now existing) file to edit in the IDE. > > > Is this something that would be acceptable into CMake? Any comments? > > I'd like to hear more opinions from others before considering it > upstream. It feels like a pretty personal workflow right now, and > can be implemented in CMake code already (perhaps with the `SOURCES` > target property to avoid separate lists). personally I'm not convinced. Technically it would violate the "the source dir is read-only" rule. A typo would generate files. With multiple build dirs the behaviour will be slightly different in the two dirs. ...not very strong arguments, but OTOH touching the file manually is also not too complicated. Alex -- 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: http://public.kitware.com/mailman/listinfo/cmake-developers
Re: [cmake-developers] Feature suggestion: auto-create missing files
On Tue, Apr 11, 2017 at 11:52:52 -0400, Brad King wrote: > If this were to be done I'd first like to see a policy introduced to > get rid of the magic extension guessing we do now. Without knowing > the full file name with confidence we wouldn't be able to create it. This is already an issue here: https://gitlab.kitware.com/cmake/cmake/issues/15208 I have a branch which needs lots of work to be rebased properly; I can dig it up if anyone is interested in taking it over before I get to it. --Ben -- 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: http://public.kitware.com/mailman/listinfo/cmake-developers
Re: [cmake-developers] Feature suggestion: auto-create missing files
Thanks for the quick response, Brad. On 11 April 2017 at 17:52, Brad King wrote: > On 04/11/2017 11:41 AM, Petr Kmoch wrote: > > Currently, adding a new source file to a CMake-controlled project > > means doing two things: creating the file on disk, and adding it > > to the relevant CMakeList add_library() or add_executable() call. > > I view this as a matching pair with an implicit sanity check. > I sometimes have very deep directory hierarchies (files are 3+ directory levels below the CMakeLists.txt), with interface header, implementation header, and implementation source in three different paths down that hierarchy. Adding one class means adding three very similar lines of CMake code, and then having to navigate three separate directory paths for adding the files. > > > switch from current behaviour of "error out if source file is not found" > > to "create empty source file if it's not found." > > So a typo in the `CMakeLists.txt` file leads to silent creation of a > source file instead of an error message? > That's why I would make it strictly opt-in. We could even get rid of the initialisation variable and keep it under full control of the project. > > That said, I can see how the proposed feature might be useful when > iteratively developing in an IDE. Add the file to `CMakeLists.txt`, > reconfigure, and open the new (now existing) file to edit in the IDE. > Yes, I'm coming from an IDE background (VS, to be precise). It would be quite helpful there. I've bounced the idea with other people in my team, and they agreed it would be useful. > > > Is this something that would be acceptable into CMake? Any comments? > > I'd like to hear more opinions from others before considering it > upstream. It feels like a pretty personal workflow right now, and > can be implemented in CMake code already (perhaps with the `SOURCES` > target property to avoid separate lists). > > If this were to be done I'd first like to see a policy introduced to > get rid of the magic extension guessing we do now. Without knowing > the full file name with confidence we wouldn't be able to create it. > I'm perfectly fine waiting for broader comments. As to extension guessing, right now the creation happens after that step in my prototype code, and simply uses the name verbatim as supplied. I'm perfectly willing to create such a guess-disabling policy, though. I've never used the guessing functionality anyway. Petr -- 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: http://public.kitware.com/mailman/listinfo/cmake-developers
Re: [cmake-developers] Feature suggestion: auto-create missing files
On 04/11/2017 11:41 AM, Petr Kmoch wrote: > Currently, adding a new source file to a CMake-controlled project > means doing two things: creating the file on disk, and adding it > to the relevant CMakeList add_library() or add_executable() call. I view this as a matching pair with an implicit sanity check. > switch from current behaviour of "error out if source file is not found" > to "create empty source file if it's not found." So a typo in the `CMakeLists.txt` file leads to silent creation of a source file instead of an error message? That said, I can see how the proposed feature might be useful when iteratively developing in an IDE. Add the file to `CMakeLists.txt`, reconfigure, and open the new (now existing) file to edit in the IDE. > Is this something that would be acceptable into CMake? Any comments? I'd like to hear more opinions from others before considering it upstream. It feels like a pretty personal workflow right now, and can be implemented in CMake code already (perhaps with the `SOURCES` target property to avoid separate lists). If this were to be done I'd first like to see a policy introduced to get rid of the magic extension guessing we do now. Without knowing the full file name with confidence we wouldn't be able to create it. -Brad -- 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: http://public.kitware.com/mailman/listinfo/cmake-developers
[cmake-developers] Feature suggestion: auto-create missing files
Hi all, I'd like to implement a feature for CMake which I miss there, and I'd like to get approval for the idea & design before proceeding. Currently, adding a new source file to a CMake-controlled project means doing two things: creating the file on disk, and adding it to the relevant CMakeList add_library() or add_executable() call. To me, this feels like one operation too many. As a result, nearly all of my personal projects using CMake end up with some sort of wrapper/pre-call which processes file lists and creates any missing files before the list is passed to the add_*() call. I'd like this behaviour to become an option in CMake itself: allow the user to switch from current behaviour of "error out if source file is not found" to "create empty source file if it's not found." I've prototyped the creation itself and it works, but I'd like to discuss the interface for enabling this functionality. I was considering an inherited boolean property on individual source file level, plus a variable which would pre-initialise the property if set. This way, projects could control it on the finest scope possible (or on broader scopes, since the prorepty would recurse to directory & global level), while still providing a simple way to set it centrally. As far as naming is concerned, I was considering CREATE_SOURCES_IF_MISSING for the property, and CMAKE_CREATE_SOURCES_IF_MISSING for the variable. Is this something that would be acceptable into CMake? Any comments? Thanks. Petr -- 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: http://public.kitware.com/mailman/listinfo/cmake-developers