Hi Brad,

I investigated this issue a bit more. I have two conclusions.

[1]
Clang generates clear error messages, and ctest detects such errors without 
problem. These errors look like this:
   ld: library not found for -lkaboom
   clang: error: linker command failed with exit code 1 (use -v to see 
invocation)

So the problem is not clang itself.

[2]
The problem is caused by Xcode that intercepts these type of errors, and 
instead of printing the original message,  prints something like:
   Command /Developer/usr/bin/clang++ failed with exit code 1

This type of error is not detected by ctest. This is a problem for those who 
invoke xcodebuild in their ctest scripts, e.g.
    ctest -S BuildMyXcodeProjectAndSendResultsToDashboard.cmake

I created and attached a patch that adds a regexp to match this type of errors. 
It is based on 36ce6e01f8a1e7f2bdb5604c7776a4a91fa36400.

Attachment: ctest.add.error.regex.patch
Description: Binary data


sincerely,
Alex Ciobanu


On 2012-03-08, at 3:38 PM, Brad King wrote:

> On 3/8/2012 3:34 PM, Alexandru Ciobanu wrote:
>> We found a scenario when when ctest does not detect a build error.
>> 
>> This occurs when clang is invoked as a linker and one of the libraries is 
>> not found:
>> 
>>     /Developer/usr/bin/clang++ -LDIR1 -LDIR2  -lib1 -lib2 -lib3 [...] -o 
>> MyApp
>>     ld: library not found for -lprofile_rt
>>     Command /Developer/usr/bin/clang++ failed with exit code 1
>> 
>> The two lines printed after this invocation are not matched by any of the 
>> regular expressions defined in Source/CTest/cmCTestBuildHandler.cxx
>> 
>> So, in our case, we have an incomplete build, and the error is not reported 
>> to the dashboard.
>> 
>> I think lines matching "clang\+* failed with exit code" should be considered 
>> errors and reported as such.
> 
> Yes.  Please format a patch for cmCTestBuildHandler.cxx to update
> cmCTestErrorMatches accordingly.
> 
> Meanwhile you can probably work around this by adding the regex to
> CTEST_CUSTOM_ERROR_MATCH in CTestCustom at the top of the project.
> 
> Alternatively you should be able to run the dashboards with the
> CTEST_USE_LAUNCHERS option.  For Makefile builds it instruments
> the compiler and linker invocations and checks the return code
> and looks at output on stderr.
> 
> -Brad

--

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://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

Reply via email to