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
_______________________________________________
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

Reply via email to