Hi Volo, If you are doing some topological sorting to build your library/executable in the right order. Instead of using CMake based solution, you could may be rely on a C++ approach ? This is what we are doing in CTK. We are using a small prog named ctkDependencyGraph that we build at configure time. See [1-4]
[1] http://www.commontk.org/index.php/Documentation/BuildSystem_Description [2] https://github.com/commontk/CTK/blob/master/CMakeLists.txt#L691-717 [3] https://github.com/commontk/CTK/blob/master/CMake/ctkFunctionGenerateDGraphInput.cmake [4] https://github.com/commontk/CTK/blob/master/CMake/ctkMacroValidateBuildOptions.cmake#L127-150 On Wed, Apr 24, 2013 at 5:13 PM, Volo Zyko <volo.z...@gmail.com> wrote: > We have executables and libraries and a lot of custom targets (the project > is organized so that we export headers during the build - not the best idea > in the world). However, I finished (more or less) the script for building > time stats from the cmake's trace and we (with my colleague) found the > slowest part. In our cmake scripts we have a bunch of sub-projects which > produce libraries and also we have an utility function with which we define > dependencies between those sub-projects. Then we define executables and > build a list of libraries in a right order (from more dependent to less > dependent) using sub-project's dependencies. This list is necessary for > linking the executables. So, it appears that the slowest part is the > function that builds the list of libraries. Basically there is nothing > wrong with that cmake function, it just intensively works with strings. :( > > And here is where I put my script: > https://code.google.com/p/cmake-profile-stats/ Comments are welcome. > > Also it looks like there are few bugs in the trace functionality of cmake; > especially how callstack changes when cmake process foreach and if/else > calls. I just didn't investigate them and I cannot provide more details. > Sorry. > > -- > Volo Zyko > > On Wed, Apr 24, 2013 at 10:14 PM, Bill Hoffman > <bill.hoff...@kitware.com>wrote: > >> On 4/24/2013 3:07 PM, Volo Zyko wrote: >> >>> Hi, >>> >>> We use Makefiles on Linux and MacOS. Windows is not our target platform. >>> From what we see Linux is the fastest. We made few attempts of building >>> our project on Windows in VS but it was very-very slow and definitely >>> cmake generates too many project files for VS. For us it was 500+ >>> projects in a workspace which is too much for Visual Studio. :( >>> >> Chances are you have too many high level targets in your project. What >> types of targets do you have? Are they all executables and libraries or >> are you using custom targets to do something? That might be a source of >> your performance issues as well. >> >> -Bill >> >> >> -- >> Bill Hoffman >> Kitware, Inc. >> 28 Corporate Drive >> Clifton Park, NY 12065 >> bill.hoff...@kitware.com >> http://www.kitware.com >> 518 881-4905 (Direct) >> 518 371-3971 x105 >> Fax (518) 371-4573 >> >> -- >> >> Powered by www.kitware.com >> >> Visit other Kitware open-source projects at http://www.kitware.com/** >> opensource/opensource.html<http://www.kitware.com/opensource/opensource.html> >> >> Please keep messages on-topic and check the CMake FAQ at: >> http://www.cmake.org/Wiki/**CMake_FAQ<http://www.cmake.org/Wiki/CMake_FAQ> >> >> Follow this link to subscribe/unsubscribe: >> http://www.cmake.org/mailman/**listinfo/cmake<http://www.cmake.org/mailman/listinfo/cmake> >> > > > -- > > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Please keep messages on-topic and check the CMake FAQ at: > http://www.cmake.org/Wiki/CMake_FAQ > > Follow this link to subscribe/unsubscribe: > http://www.cmake.org/mailman/listinfo/cmake > -- +1 919 869 8849
-- Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake