[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