Hi all, Recently I ran into a problem with a medium-large sized project with newer CMakes. At first I didn't know what was going on: a cmake run started to crawl, until it almost came to a standstill and then the OS killed my login session. It turned out that, just before being logged out forcibly by the OS, cmake was consuming a whopping 14GB(!) of RAM memory.
Time for some digging. Luckily I have a number of different version of
CMake lying around on my system, so it was quite easy to figure out that
CMake < 2.8.8 behaved normally, wheras CMake >= 2.8.8 would just blow
up. When I started to print some variables and properties I understood
why: my list of include paths had grown ridiculously large. I won't go
into detail about the setup of this specific project, but suffice it to
say that include_directories() is used inside a macro that is called
quite a lot in order to resolve cross-dependencies. This never was a
problem, because CMake automatically performed de-duplication of include
paths; until version 2.8.8.
Now my question. What is the proper (or best) way to handle this. I've
been thinking along the following line: replace the call to
include_directories() in the offending macro with:
- include_directories(${_dirs})
+ list(APPEND _inc_dirs ${_dep_inc_dirs})
+ list(REMOVE_DUPLICATES _inc_dirs)
+ set_directory_properties(PROPERTIES INCLUDE_DIRECTORIES "${_inc_dirs}")
Any suggestions or comments?
Best regards,
Marcel Loose.
<<attachment: loose.vcf>>
-- 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://www.cmake.org/mailman/listinfo/cmake
