Dear All,

Maybe I should've google-d better. So now I started experimenting with 
include_regular_expression(...).

https://cmake.org/cmake/help/v3.0/command/include_regular_expression.html

But now I'm having a problem with expressing my intent with a regular 
expression. In principle I'd like to only take headers from the source 
directory into account in the dependency calculation. So I first tried this:

include_regular_expression( "^${CMAKE_SOURCE_DIR}.*$" )

But this was way too restrictive. As headers from the source directory normally 
show up with relative paths in the depend.make files.

So okay, I tried this next:

include_regular_expression( "^(${CMAKE_SOURCE_DIR}.*)|([^/]+.*)$" )

(To try to make it only accept paths that are either in CMAKE_SOURCE_DIR, or 
are not starting with "/".)

But this didn't work either. I'm back to having all the boost files in my 
dependency list.

Any suggestion for how I could express my intent in a regular expression that 
CMake would understand?

Cheers,
         Attila

> On 07 Dec 2015, at 10:57, Attila Krasznahorkay 
> <[email protected]> wrote:
> 
> Dear All,
> 
> I'm struggling since a few days with the following issue.
> 
> Our development setup is such that we build large software projects in a 
> nightly build system, which puts these projects onto a network drive. The 
> developers then set up these nightly projects, and build their own code 
> against them. (They can even rebuild parts that are in the nightly itself, 
> that also required some clever tricks in CMake...)
> 
> This kind of works by now. But the system is incredibly slow. When I try to 
> build some source code against installed releases on the network file system, 
> >90% of the time is seemingly just spent in dependency 
> calculation/evaluation. To demonstrate the extent of the issue, here is an 
> example of the files generated by CMake for one of our "packages". (Sorry, 
> they are pretty large. But that's the point...) Mind you, this is a very 
> simple package that just picks up Boost from the network disk. For high level 
> packages the depend.make file can be up to 2 MB in size. :-(
> 
> <depend.make><flags.make>
> 
> As you can see, I tried to convince CMake to treat the include directories 
> coming from the network file system (AFS) as system include directories. But 
> still, the dependencies put into depend.make list every single header file 
> that the build targets have any relationship with.
> 
> As it turns out, AFS is pretty slow for such operations. Checking the change 
> times of thousands of files. At least this is what I contribute the 
> ridiculously slow build times to. (Not for this example. This package still 
> builds reasonably. It's the higher level packages that break down completely. 
> I just couldn't attach example files from those due to the size limitations 
> of this mailing list.)
> 
> So... How could one convince CMake to exclude some directories from the 
> dependency setup? The files that are part of the nightly builds should 
> definitely not need to be checked for changes every time I run a build. As 
> you can see, depend.make even list all the Boost headers at the moment. :-(
> 
> What I tried so far was to specify the include directories using SYSTEM in 
> target_include_directories. But it didn't make any difference whether I used 
> SYSTEM or not.
> 
> Is there some other mechanism that I could use here?
> 
> Cheers,
>            Attila

-- 

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

Reply via email to