[CMake] CTest: another sub-directory issue / coverage test

Richard Wackerbarth rkw at dataplex.net
Tue Nov 10 05:38:35 EST 2009


Johannes,

Is there any compelling reason to place the cmake "control files" in a  
directory under the root?

Foo/
    CMakeLists.txt
    CTestConfig.cmake
    include
       Foo.h
    src
       Foo.cpp
       FooTest.cpp

is a more conventional structure

On Nov 10, 2009, at 2:43 AM, Johannes Stallkamp wrote:

Hello,

I am still experimenting and learning how to setup CTest/CDash support
for our projects.
We have the following directory structure for our projects:

Foo/
    cmake
       CMakeLists.txt
       CTestConfig.cmake
    include
       Foo.h
    src
       Foo.cpp
       FooTest.cpp


Running CMake generates DartConfiguration.tcl in my build directory
with source directory set to Foo/cmake. This actually prevents running
the code coverage test successfully.
It only covers the header file Foo.h and not the source code (which is
compiled/linked with the required compiler switches). If I manually
modify the source directory in DartConfiguration.tcl
to Foo/ it works just fine and all code including Foo.cpp (FooTest is
linked against libFoo which is compiled from Foo.cpp) is checked for
coverage.

Is this intended behaviour?

My first attempt to solve this issue was to change (in
DartConfiguration.tcl.in)

SourceDirectory: @PROJECT_SOURCE_DIR@
to
SourceDirectory: @PROJECT_SOURCE_DIR@/..

which results in
SourceDirectory: /Foo/cmake/..
when running cmake. This is/should be equivalent to
SourceDirectory: /Foo
but somehow it is not. The code coverage test did not cover all files,
just the headers.

So, my current workaround is to modify DartConfiguration.tcl.in to
SourceDirectory: @PROJECT_ROOT@
which I manually set to "/Foo" with
GET_FILENAME_COMPONENT( PROJECT_ROOT ${PROJECT_SOURCE_DIR}/.. ABSOLUTE )

While writing the email, I just found
http://public.kitware.com/Bug/view.php?id=9678 (CTest fails to
summarize code coverage using gcov for files compiled outside
PROJECT_SOURCE_DIR subtree)
and I think this is actually related. But shouldnt't the first
approach using "/.." work neverthless? Excluding system files
definitely makes sense but if I explicitly set the source directory,
CTest should accept that.

Any comments?

Johannes

_______________________________________________
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



More information about the CMake mailing list