[CMake] ctest_build - very slow
Pascal Augustin
pascal at rogue-research.com
Tue Aug 17 17:34:52 EDT 2010
Hi,
I have a script where I tell ctest how to build my xcode project using xcodebuild and send the results to our dashboard. However, I have noticed that ctest_build is much much slower than when I am building my project manually with Xcode or xcodebuild. For some of my projects, it can be as much as 10 times slower. (~1 hour)
Here is the script:
set (CTEST_DASHBOARD_ROOT "/Volumes/Data/SomeProject")
set (CTEST_SOURCE_DIRECTORY "${CTEST_DASHBOARD_ROOT}")
set (CTEST_BINARY_DIRECTORY "${CTEST_DASHBOARD_ROOT}/build/")
set (CTEST_SITE "SomeSiteName")
set (CTEST_BUILD_NAME "SomeBuildName")
set (CTEST_NOTES_FILES "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}")
set (CTEST_UPDATE_COMMAND "svn")
set (CTEST_CMAKE_GENERATOR "Xcode")
set (CTEST_PROJECT_NAME "SomeProjectName")
set (CTEST_BUILD_CONFIGURATION "Debug")
set (CTEST_TEST_TIMEOUT 800)
set (CTEST_BUILD_COMMAND "xcodebuild -project MyProject.bsproj -target MyTarget -configuration Debug clean build")
ctest_start (Experimental)
ctest_build (BUILD ${CTEST_BINARY_DIRECTORY})
ctest_test (BUILD ${CTEST_BINARY_DIRECTORY})
ctest_submit ()
After profiling the ctest process, I have obtained the following results:
ctest version 2.8.2.20100817-gb3998
0.0% 100.0% ctest main
0.0% 100.0% ctest cmCTest::Run(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >*)
0.0% 100.0% ctest cmCTestScriptHandler::ProcessHandler()
0.0% 100.0% ctest cmCTestScriptHandler::RunConfigurationScript(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)
0.0% 100.0% ctest cmCTestScriptHandler::ReadInScript(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
0.0% 100.0% ctest cmMakefile::ReadListFile(char const*, char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool)
0.0% 100.0% ctest cmMakefile::ExecuteCommand(cmListFileFunction const&, cmExecutionStatus&)
0.0% 100.0% ctest cmCommand::InvokeInitialPass(std::vector<cmListFileArgument, std::allocator<cmListFileArgument> > const&, cmExecutionStatus&)
0.0% 100.0% ctest cmCTestBuildCommand::InitialPass(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, cmExecutionStatus&)
0.0% 100.0% ctest cmCTestHandlerCommand::InitialPass(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, cmExecutionStatus&)
0.0% 100.0% ctest cmCTestBuildHandler::ProcessHandler()
0.0% 100.0% ctest cmCTestBuildHandler::RunMakeCommand(char const*, int*, char const*, int, std::basic_ofstream<char, std::char_traits<char> >&)
0.0% 100.0% ctest cmCTestBuildHandler::ProcessBuffer(char const*, int, unsigned long&, unsigned long, std::basic_ofstream<char, std::char_traits<char> >&, std::deque<char, std::allocator<char> >*)
0.0% 100.0% ctest cmCTestBuildHandler::ProcessSingleLine(char const*)
0.0% 100.0% ctest cmsys::RegularExpression::find(char const*)
0.0% 100.0% ctest cmsys::regtry(char const*, char const**, char const**, char const*)
0.5% 100.0% ctest cmsys::regmatch(char const*)
The size of the build output is 7763KB. There are no compiler errors or warnings. ctest_test is about as fast as running the unit tests myself in Xcode. The problem really seems to be only with ctest_build.
Thanks,
Pascal
More information about the CMake
mailing list