From: Wheeler, F. W (Research) <wh...@cr...> - 2003-10-13 15:08:46
|
Brad, Andy, I'm CCing the list because changes like this should be aired there. I try to explain below what I would do and why, but I'm far from the authority on this, so I hope others chime in. Thanks a lot for doing this. I can't wait to see it. > From: Brad King > Sent: Monday, October 13, 2003 10:21 AM > To: Fred Wheeler > Cc: Andy Cedilnik > Subject: VXLConfig.cmake and "export" directory > > > Hi Fred, > > If I remember correctly, you mentioned the idea of moving the > code that > generates VXLConfig.cmake from the "config" directory to an "export" > directory. That was me. Putting that in "config" is a minor no-no, as explained below. > Andy and I are looking for a place to put the new > CMake-ified > VCL configuration code. I'm thinking of this directory structure: > > vxl/config/cmake/CMakeLists.txt <-- new vcl config code > vxl/config/export/CMakeLists.txt <-- create VXLConfig.cmake I'm being pedantic, but I would avoid putting the cmake-specific export directory under vxl/config. The reasons are explained below. > Then the top-level CMakeLists.txt file would look like this: > > PROJECT(vxl) > > # Perform configuration tests. > SUBDIRS(config/cmake) > > # ... all other code ... > > # Export settings. > SUBDIRS(config/export) > > The problem is that when a SUBDIRS command jumps over a > directory level, > CMake still looks for a CMakeLists.txt file in the > middle-level directory > in which to get inherited commands. If the configuration code (which > should run first) and the export code (which should run last) > share a path > to the top of the tree, things may run out of order. > Therefore, we need > them to be in parallel but separate directories. I would propose this: vxl/config/cmake/config/CMakeLists.txt <-- new vcl config code vxl/config/cmake/export/CMakeLists.txt <-- create VXLConfig.cmake It looks too deep, but there is a method to the madness. vxl/config is meant to be the home for all configuration methods (cmake, autoconf, foo, ...). Only subdir cmake is there now, but that is the idea. There is a CMakeLists.txt there now, but there should not be. vxl/config/cmake is, obviously, meant to hold the CMake configuration stuff. Because of the parallel requirement you note, we then need to have dirs vxl/config/cmake/config and vxl/config/cmake/export. The top-level CMakeLists would have SUBDIRS(config/cmake/config) and SUBDIRS(config/cmake/export). Now there still could be trouble, as you mention, with CMakeLists files in vxl/config and vxl/config/cmake. Will this work if there are no CMakeLists files in those dirs, or if there are, but they are empty? The former can be enforced with "NoCMakeLists.txt" files in vxl/cmake and vxl/cmake/config. If the latter is OK - I suggest adding CMakeLists.txt files in vxl/cmake and vxl/cmake/config that have comments explaining that they must stay empty. If that will not work, then I guess we have no choice but to add subdirs at the top level for cmake configuration and export. I would suggest vxl/cmake_config and vxl/cmake_export. > Thoughts? > -Brad > |
From: Brad K. <bra...@ki...> - 2003-10-13 15:16:53
|
On Mon, 13 Oct 2003, Wheeler, Frederick W (Research) wrote: > I would propose this: > > vxl/config/cmake/config/CMakeLists.txt <-- new vcl config code > vxl/config/cmake/export/CMakeLists.txt <-- create VXLConfig.cmake [snip] > The top-level CMakeLists would have SUBDIRS(config/cmake/config) and > SUBDIRS(config/cmake/export). That looks fine to me. We'll go with that unless there are any objections. -Brad |