[CMake] can a dependency be added to a specific test (CXX Test)?

Edward Flanigan eflanigan00 at hotmail.com
Tue Jul 22 23:50:18 EDT 2008

I am trying to create a test.

The traditional way uses the command :   add_test (simpleTest executable)
I want to know if there is any way to add a dependency to a specific test?
CMake does not recognize simpleTest as a target.

For my application I am trying to use cxx test.
A script (executable) is ran which produces a *.cpp file.
That file is then compiled to an executable test (simpleTest).

The target for the test (creating the *.cpp and test executable) should only build with command 'make test'
A simple 'make' should not build the target of the test (create *.cpp and test executable)

The way I have gotten this to work in the past is to have a new "Simple" project for the simple test, and use add_custom_command within the Simple project to generate the *.cpp file.

add_test (simpleTest ${CMAKE_CTEST_COMMAND}
        --build-and-test "a directory/test"

                         "a directory/test"

        --build-generator ${CMAKE_GENERATOR}
        --build-makeprogram ${CMAKE_MAKE_PROGRAM}
        --build-project Simple
        --test-command simple)

The add_test command calls the "Simple" project, builds the executable (simple) and then runs the test (simpleTest).

If possible I want to avoid having to create a new project because my application requires that a lot of shell variables be set as well as a lot of libs to be linked in.

When I call  'make test'
I want the following:
1.) have the script execute to create a *.cpp file,
2.) build the test executable from the *.cpp file
3.) run the test.
4.) This all must be done without calling new projects

My thoughts are the following:
If I could add a dependency to a specific test,
I could use target property "EXCLUDE_FROM_ALL" to make sure the test *.cpp and executable are only created during 'make test'
and not during 'make'.

Thanks in advance for any help.

Time for vacation? WIN what you need- enter now!

More information about the CMake mailing list