On 7. Jul, 2010, at 16:01 , Paul Harris wrote:

> Hi all,
> 
> I have looked and can't find the answer, so I turn to the list.
> 
> I have a CMakeLists.txt and a subdirectory called utils, which also has its
> own CMakeLists.txt
> 
> In the parent CML.txt, I have something like:
> 
> ENABLE_TESTING()
> add_subdirectory(utils)
> 
> In my utils CML.txt, I have
> 
> ADD_EXECUTABLE(unit_1 units/unit_1.cpp)
> ADD_TEST( unit_1 ${EXECUTABLE_OUTPUT_PATH}/unit_1 )
> 

Simplify this to

ADD_TEST(unit_1 unit_1)

CMake will figure out by itself that unit_1 is a target and invoke the 
executable correctly (your code would break for multi-configuration IDE 
generators).

As for the dependencies, I agree that it would be nice if the "test" target 
depended on the executables. But what is wrong with "make all test" (apart from 
the fact that it possibly compiles more than you actually need to run the 
test)? You could also wrap the add_executable call in a custom function which 
creates a custom target (say test_exes) and makes it depend on all the 
executables:

function(add_test_executable name)
  if(NOT TARGET ${name})
    add_custom_target(test_exes)
   endif()
   add_executable(${name} ${ARGN})
   add_dependencies(test_exes ${name})
endfunction()

Then you can do "make test_exes test".

HTH

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