On 8 July 2010 15:31, Michael Wild <them...@gmail.com> wrote: > > On 8. Jul, 2010, at 7:25 , Paul Harris wrote: > > > On 8 July 2010 12:56, Michael Wild <them...@gmail.com> wrote: > > > >> > >> On 8. Jul, 2010, at 4:40 , Paul Harris wrote: > >> > >>> On 7 July 2010 23:05, Michael Wild <them...@gmail.com> wrote: > >>> > >>>> > >>>> 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). > >>>> > >>>> > >>> This does not work for me. If I do not have the EXECUTABLE_OUTPUT_PATH > >> in > >>> add_test, I get a message like this when i run "make test" (shortened > for > >>> brevity): > >>> > >>> 1/ 1 Testing unit_string_numeric_utils Could not find executable > >>> unit_string_numeric_utils > >>> Looked in the following places: > >>> unit_string_numeric_utils > >>> unit_string_numeric_utils > >>> Release/unit_string_numeric_utils > >>> Release/unit_string_numeric_utils > >> > >> Mmmh, works fine for me: > >> > >> --------->8--------- > >> cmake_minimum_required(VERSION 2.8) > >> project(tmp) > >> > >> enable_testing() > >> > >> add_executable(unit1 unit1.cpp) > >> add_test(unit1 unit1) > >> ---------<8--------- > >> > >> Where unit1.cpp is just a simple hello-world program. Running it: > >> > >> > > snip > > > > My project is a lot bigger than a hello-world program. It has > > subdirectories for a start, and I do things like > > SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE INTERNAL > "Single > > output directory for building all executables.") > > > > I'm not sure at which point things stop working, do you want me to try > and > > build a test-case? > > You are right, it seems that the documentation is misleading (or IMHO > outright wrong). This, however, works for me and is safe: > > add_test(NAME unit1 COMMAND $<TARGET_FILE:unit1>) > > Note that NAME and COMMAND are required for this to work. > > BTW: EXECUTABLE_OUTPUT_PATH is deprecated, you should use > CMAKE_RUNTIME_OUTPUT_DIRECTORY instead. > > I changed EXE to that CMAKE RUNTIME thing, thanks.
That NAME/COMMAND thing doesn't work for me at all. Can't find the binary without the runtime output path explicitly added. This is what I tried: In parent CMakeLists.txt ENABLE_TESTING() set (CMAKE_TEST_COMMAND ctest -V) function (add_unit_test name) if(NOT TARGET ${name}) add_custom_target (check COMMAND ${CMAKE_TEST_COMMAND}) endif() add_executable(${name} ${ARGN}) add_test(NAME ${name} COMMAND $<TARGET_FILE:${name}>) add_dependencies(check ${name}) endfunction() in subdirectory CMakeLists.txt add_unit_test(unit_string_numeric_utils units/unit_string_numeric_utils.cpp string_numeric_utils.cpp)
_______________________________________________ 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